# Programmcode oder Quellcode in Form von Opcodes ausgeben (IDA)



## Knogle (4. Februar 2014)

Hallo liebe Community
Wie kann ich irgendwelchen code eines xbeliebigen Programms in Form von Opcodes in IDA ausgeben? 


Bitte um Hilfe

MfG


----------



## XPrototypeX (4. Februar 2014)

Ich kenn nur ein Plugin für Olly aber vielleicht hilft das schon: 

coder edition | X86 Opcode and Instruction Reference 1.11


----------



## Knogle (4. Februar 2014)

Koenntest du mir einen Link zum Plugin schicken?


----------



## XPrototypeX (4. Februar 2014)

Mhh das ist kein Plugin das ist sogar standardmäßig dabei. Das ist die 2 Spalte in der CPU View. 
Z.B Push 60 wäre x61x60.


----------



## Knogle (4. Februar 2014)

Bin ziemlich unerfahren was die ganzen Funktionen in IDA betrifft 
Damals habe ich mal hingekriegt jedoch weiss ich nicht mehr wie
Ich benoetige Codes wie dieser hier z.b. : 0x88


----------



## bingo88 (4. Februar 2014)

Knogle schrieb:


> Bin ziemlich unerfahren was die ganzen Funktionen in IDA betrifft
> Damals habe ich mal hingekriegt jedoch weiss ich nicht mehr wie
> Ich benoetige Codes wie dieser hier z.b. : 0x88


Siehe hier? Oder meinst du doch was anderes?


XPrototypeX schrieb:


> Mhh das ist kein Plugin das ist sogar standardmäßig dabei. Das ist die 2 Spalte in der CPU View.
> Z.B Push 60 wäre x61x60.


----------



## XPrototypeX (4. Februar 2014)

Wie gesagt ka ob es das in IDA gibt. Ich benutze meistens OllyDBG.

Edit Du solltest dir mal ein paar Tuts dazu durchlesen. Das meiste bzw. das gute gibts nur in Englisch.


----------



## bingo88 (4. Februar 2014)

Es gibt da wohl ein Hex-View, aber da ich das Programm selbst nicht nutze, kann ich dir nicht sagen, ob es das ist. Wäre aber mal ein erster Anhaltspunkt.


----------



## Knogle (4. Februar 2014)

CPU View?


----------



## Knogle (4. Februar 2014)

Gibt es denn alternative Programme mit denen ich die Opcodes rauskriege?


----------



## XPrototypeX (4. Februar 2014)

Dort wo der disassemblierte Code angezeigt wird? Über dem Memory Dump? Links vom Register View? Schräg gegenüber vom Stack? 

Die ganzen Angaben beziehen sich wie gesagt auf OllyDBG, nicht auf IDA.

Ja, die Liste die ich gepostet habe. Ansonsten Google.


----------



## bingo88 (4. Februar 2014)

Jo, hier: OllyDbg v1.10

Wofür brauchst du denn die Opcodes überhaupt?


----------



## XPrototypeX (4. Februar 2014)

Wahrscheinlich will er Code in ein Program während der Laufzeit injecten. Das erfordert ziemlich genaue Berechnungen. Es gibt auf Codeproject jede Menge gut dokumentierte Beispiele.

Edit: 
Die normale Vorgehensweise: 
Du schreibst das was du machen will in Assembler. Assemblierst das und kopierst einfach den Opcode davon und setzt vor jede Instruction ein x


----------



## bingo88 (4. Februar 2014)

Jo, kann man so machen


----------



## Knogle (4. Februar 2014)

bingo88 schrieb:


> Jo, hier: OllyDbg v1.10
> 
> Wofür brauchst du denn die Opcodes überhaupt?


 
Naja ich moechte die Opcodes in einer anderen Sprache verwenden die das nur in Form von Opcodes unterstuetzt

Ehm wie assembliere ich das was ich in assembler geschrieben habe?
Einfach meine .asm Datei compilen und dann mit dem disassembler oeffnen?

Hab mir nun OllyDbg geladen


----------



## XPrototypeX (4. Februar 2014)

Um ehrlich zu sein Benutze ich nur inline assembler in C. Wie genau das der dann assembliert weiß ich nicht. Jedoch kompiliert der das in eine .exe die ich dann z.B in olly einlesen kann. 
Einem Assembler Toolkit liegt normalerweise auch ein disassembler bei. Versuchs mal damit.


----------



## bingo88 (4. Februar 2014)

Knogle schrieb:


> Naja ich moechte die Opcodes in einer anderen Sprache verwenden die das nur in Form von Opcodes unterstuetzt


Das erinnert mich an Visual C++ 6 SP6 und SSE *grusel*



Knogle schrieb:


> Ehm wie assembliere ich das was ich in assembler geschrieben habe?
> Einfach meine .asm Datei compilen und dann mit dem disassembler oeffnen?


Hättest du das vorher gesagt, hätte ich dir was anderes empfohlen.
Lade dir am besten von www.nasm.us den Netwide Assembler. Der hat auch direkt einen Disassembler dabei. Du musst beim assemblieren allerdings ein Flat Binary (also bin) erzeugen, sonst packt der dir ggf. noch anderes Zeugs darein.

Assembler-Code in eine Datei schreiben: whatever.asm
Assemblieren: nasm -O0 -f bin -o whatever.bin whatever.asm
Disassemblieren: ndisasm whatever.bin > disas.txt


----------



## Knogle (4. Februar 2014)

XPrototypeX schrieb:


> Um ehrlich zu sein Benutze ich nur inline assembler in C. Wie genau das der dann assembliert weiß ich nicht. Jedoch kompiliert der das in eine .exe die ich dann z.B in olly einlesen kann.
> Einem Assembler Toolkit liegt normalerweise auch ein disassembler bei. Versuchs mal damit.


 
Naja okay soweit bin ich auch 
Habe den Kram nun in OllyDbg
Welche der ganzen Spalten kann ich nun verwerten?
Mit dem Hex Dump kann ich ja nicht viel anfangen


----------



## XPrototypeX (4. Februar 2014)

Mach es so wie bingo es geschrieben hat. Sich dafür in Olly einzuarbeiten ist dann doch etwas overkill.

Bzw. Wenn du mit dem dissasembler drüber gehst, müsstet er dir doch ein output datei anlegen mit dem inhalt oder?


----------



## bingo88 (4. Februar 2014)

XPrototypeX schrieb:


> Bzw. Wenn du mit dem dissasembler drüber gehst, müsstet er dir doch ein output datei anlegen mit dem inhalt oder?


 Siehe mein Edit oben. Ndisasm gibt das auf dem Standardausgabestream aus, muss man also in ne Datei umleiten


----------



## Knogle (4. Februar 2014)

Das werde ich mal probieren
Ich berichte dann morgen mal 


EDIT:
nasm.us ist nicht erreichbar


----------



## bingo88 (4. Februar 2014)

Daran soll es nicht scheitern ^^
NASM - Download - heise online

Das ist übrigens ein Konsolenprogramm (also cmd.exe nutzen!), du musst also entweder deine PATH-Variable anpassen oder das Programm vom Installationspfad aus aufrufen.


----------



## XPrototypeX (4. Februar 2014)

Um es nachher besser zu sehen würde ich um wichtige Codeteile einfach ein paar nop Instructions schreiben.


----------



## Knogle (5. Februar 2014)

Der ganze Code ist wichtig ;D


----------



## XPrototypeX (5. Februar 2014)

Hast du es hin bekommen? Wenn es nicht zu viel Code ist kannst du mir ihn eigentlich auch schicken und ich schaue was ich tun kann...


----------



## bockwurst90 (15. März 2014)

Deine Frage ist unverständlich. Den Code irgendeines Programms kann man nicht pauschal in Maschinenbefehle verwandeln. Du kannst jede Executable auseinandernehmen, da diese reinen Maschinencode enthält. Hast du aber eine Textdatei mit Programmcode irgendeiner höheren Sprache, dann musst du diese zunächst von einem Compiler übersetzen lassen. Viele Compiler haben die Möglichkeit, dir den Maschinencode auszuspucken. Es gibt auch die Möglichkeit in die Executables beim Kompilieren die Variablennamen aus dem Code hinein zu giessen, damit beim Disassemblen diese sichtbar werden um die Lesbarkeit des Maschinencodes zu erhöhen.

Die Frage ist, was willst du genau tun? Zweite Frage ist, wieso fragst du so etwas in einem Forum wie PCGH, wo bekanntlich keiner eine Ahnung hat und alle nur Halbwahrheiten über Informatik verbreiten?


----------

