Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Suche Oppcode => ASM Reference... (https://www.delphipraxis.net/98643-suche-oppcode-%3D-asm-reference.html)

Kedariodakon 30. Aug 2007 12:14


Suche Oppcode => ASM Reference...
 
Hallo,
ich stoße mal gerade auf Probleme…

Und zwar geht es darum Binärdaten (Opcode) in ASM umzuwandeln…
bzw. erstmal zu gruppieren…

Um das zu tun bin ich auf der Suche nach einer passenden Liste…
Scheinbar gibt es wohl verschiedene OPCode Tabellen, je nachdem mit was für ein Prozessor man arbeitet…

Nun mal die entscheidende Frage, wo find ich eine vollständige Liste für den x86 (das was ich hier gerade nutze, Athlon XP 1800+) und wo finde ich eine für den x64 (z.b. für den Athlon 64/Fx/x2)

Bye Christian


Edit: Ok habe schonmal was gefunden...
sandpile.org/

Nur hab ich immernoch nicht wirklich einen Plan wie ich irgendein Code entsprechend Disassemblen (bzw. erstmal gruppiern) kann...


Bye Christian

xaromz 30. Aug 2007 12:38

Re: Suche Oppcode => ASM Reference...
 
Hallo,

warum benutzt Du nicht einfach einen Disassembler? Der strukturiert Dir den Code automatisch.

Gruß
xaromz

Kedariodakon 30. Aug 2007 12:49

Re: Suche Oppcode => ASM Reference...
 
Gut, dass ist eine berechtigte Frage!

Ich beschäftige mich gerade ein wenig mit Hooks und anderen Speicher Manipulationen ;)

Und zwar geht es erstmal darum, wo Code einzufügen ohne das der alte zerstört wird, sprich einfach nur rausspringen, paar NOPs ausführen gesicherten Code ausführen, zurückspringen...
Damit ich dies aber irgendwo machen kann, muss ich natülich den alten Code an der Stelle wo ich meinen Jump einfüge sichern und dies scheinbar so, das er nicht zerstückelt wird, sonst gibt es pöses AUA ;)

Und da das so meine wersten pösen ASM versuche sind bin ich noch ein wenig unbedarft...

Solang ich das manuell hier in der Sandkiste mache ist das ja weniger wild, da ich ja im Debuger nachschaun kann was ich sichern muss...

Zudem will ich was daraus lernen, und eine eigene Disassembler Funktion hilft mir da sicher :angel2:

Bye Christian

sirius 30. Aug 2007 12:55

Re: Suche Oppcode => ASM Reference...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier gibt es eine disasm.dll (vielleicht auch den Source dazu)
Und im Anhang habe ich eine Klasse dazu, damit kannst du disassemblen oder anderweitig rumspielen.


btw: Hook und Speichermanipulation würde ich nicht in einen Topf werfen...

Kedariodakon 30. Aug 2007 13:04

Re: Suche Oppcode => ASM Reference...
 
Zitat:

Zitat von sirius
Hook und Speichermanipulation würde ich nicht in einen Topf werfen...

Ok, dann frag ich mal nach dem "Warum".

Zitat:

Zitat von sirius
Hier gibt es eine disasm.dll (vielleicht auch den Source dazu)
Und im Anhang habe ich eine Klasse dazu, damit kannst du disassemblen oder anderweitig rumspielen.

Danke für den Link, da werde ich mir später nochmal genauer umschauen...


Im Grunde geht es mir aber im Moment nicht nach fertigen Source-Code, sondern ich benötige nur Informationen, da ich das ja aus Lernzwecken selbst umsetzen möchte ;)

Bye Christian

sirius 30. Aug 2007 13:10

Re: Suche Oppcode => ASM Reference...
 
Was du definitv brauchst ist den Anfang eines Opcodes. Du kannst nicht blinklinks in einen CodeSchnippsel reinrennen. Und von da an ist es doch nicht allzu schwer, denke ich. Du nimmst dir das erste Byte und schaust ob noch mehr Bytes zu dem Befehl gehören.

Edit:
Zitat:

Ok, dann frag ich mal nach dem warum.
Na mit einem Hook manipuliert man doch keinen Speicher. Ein Hook ist dazu da, um irgendwelche Nachrichten, bzw. sonstige Aktionen auf dem Rechner mitzubekommen. Bestenfalls muss man für den Hook an der Einsprungadresse etwas überschreiben, ok. Da schneidet sich Speichermanipulation und Hook.

Kedariodakon 30. Aug 2007 13:15

Re: Suche Oppcode => ASM Reference...
 
Zitat:

Zitat von sirius
Was du definitv brauchst ist den Anfang eines Opcodes. Du kannst nicht blinklinks in einen CodeSchnippsel reinrennen.

Das ist schon klar, das ich nicht blindlings in den Code reinspringen darf :zwinker:

Zitat:

Zitat von sirius
Und von da an ist es doch nicht allzu schwer, denke ich. Du nimmst dir das erste Byte und schaust ob noch mehr Bytes zu dem Befehl gehören.

Und genau das ist ja mein aktuelles Problem...
sprich gehören da nun noch mehr Bytes zu dem Befehl, falls das erste Byte überhaupt den ganzen Befehl darstellt, denn das ist scheinbar nicht immer so...

Nungut, ich wühl mich eben durch die von mir oben genannte Seite, aber wirklich schlau werd ich daraus noch nicht...


Bye Christian

Edit:
Zitat:

Zitat von sirius
Bestenfalls muss man für den Hook an der Einsprungadresse etwas überschreiben, ok. Da schneidet sich Speichermanipulation und Hook.

Das es nur Hooks mit Speichermanipulation gibt, will ich jetzt nicht verneinen, da ich mir diesbezüglich nicht sicher bin, aber bei den Hooks die ich so erstelle, muss ich immer Speicher manipulieren...
Nunja zumindest überschreiben muss man fast immer irgendwas... Und das sollte nunja nicht blind geschehen..

OlafSt 30. Aug 2007 13:37

Re: Suche Oppcode => ASM Reference...
 
Allererste Adresse bei Fragen zu Opcodes auf dem PC ist - natürlich - Intel. Die haben den Instruction Set entworfen.

Suche dort mal nach "Intel® 64 and IA-32 Architectures Software Developer’s Manual" oder "Instruction Set Reference". Sind zwei PDF-Dokumente mit jeweils 2,5MB Größe.

Gutes gelingen bei dem Versuch, einen kleinen DisAsm zu basteln :thumb:

Muetze1 30. Aug 2007 13:39

Re: Suche Oppcode => ASM Reference...
 
... welche du dir auch in Buchform von Intel kostenlos zusenden lassen kannst.

Kedariodakon 30. Aug 2007 14:57

Re: Suche Oppcode => ASM Reference...
 
Öhm ich hab danach gesucht, und komm auch auf eine entsprechende Intel-Seite: Intel® 64 and IA-32 Architectures Software Developer's Manuals

Nun bin ich von der Fülle der Informationen erschlagen!

Und das ist einfach zuviel, ich hab nun alle entsprechenden Dokumente durchgeblättert, aber das einzigste was ich finde sind super detailierte Funktionsbeschreibungen.... :|

Eigentlich suche ich nur eine keine simple Tabelle der Opcodes... und sowas lässt sich in dem Haufen von Informationen nicht finden... Hat da wer ev. genauere Angaben?

ich will doch erstmal nur wissen, wieviel Bytes auf ein entsprechendes Byte folgen... Und dafür 20.000 Seiten lesen? Für genauere Angabn wär ich echt dankbar...

Bye Christian

sirius 30. Aug 2007 15:17

Re: Suche Oppcode => ASM Reference...
 
Zitat:

Zitat von Kedariodakon
Und genau das ist ja mein aktuelles Problem...
sprich gehören da nun noch mehr Bytes zu dem Befehl, falls das erste Byte überhaupt den ganzen Befehl darstellt, denn das ist scheinbar nicht immer so...

Doch, das geht trotzdem. denn anders auch auch die CPU nicht. Wenn z.B. da eine $55 als erstes Byte steht, dann ist klar, dass es nur push ebp sein kann. Es gibt keinen anderen Befehl der mit $55 anfängt. Wenn da $E8 steht, dann ist klar, dass dies auch ein 1 Byte-Befehl ist, dem allerdings definitiv noch eine 32bit RVA (relativ virtual Adress) folgt.

Anders bei mov ($83 etc) -Befehlen, die haben noch einen zweiten Anteil von wo aus "gemoved" wird und evtl. noch eine Zahl. du siehst also an dem ersten Byte, ob der Befehl noch länger ist, oder ob das schon alles war.

--> Viele ASM-Befehle haben mehrere Opcodes, je nach Anzahl und Art der Operanden.

Edit:
Trotzdem sehe ich auf Grund der zahlreichen kostenlosen Disassembler nicht die Notwendigkeit dieses unbedingt lernen zu wollen. Ausser wenn man irgendwann einmal fließend "intel x86" sprechen will.

Kedariodakon 30. Aug 2007 15:50

Re: Suche Oppcode => ASM Reference...
 
Nun, ich bin kein Profi, aber soweit ich das gelesen hab, verweisen manche Bytes auf eine weitere Obcode-Tabelle...

Und genau um das alles zu verstehn und einen Überblick über die Sache zu erhalten, möchte ich mich damit auseinandersetzen...
ICh möchte jetzt nicht ein Disassembler schreiben, dass würde die Sache etwas übertreiben, aber eine Tabelle wie lang was ist sollte schon rauskommen....

Bye Christian

Muetze1 30. Aug 2007 16:09

Re: Suche Oppcode => ASM Reference...
 
Vielleicht hilft dir eine andere Aufstellung. Mir hatte damals Ralf Brown's Interrupt List (RBIL) sehr geholfen. Diese hat eine opcodes.txt im Archiv und diese stellt die Opcodes und deren Co/Decodierung etwas anders in Tabellenform dar. Vllt. hilft dir das. Ralf Brown's Interrupt List

Kedariodakon 31. Aug 2007 10:05

Re: Suche Oppcode => ASM Reference...
 
Zitat:

Zitat von Muetze1
Vielleicht hilft dir eine andere Aufstellung. Mir hatte damals Ralf Brown's Interrupt List (RBIL) sehr geholfen. Diese hat eine opcodes.txt im Archiv und diese stellt die Opcodes und deren Co/Decodierung etwas anders in Tabellenform dar. Vllt. hilft dir das. Ralf Brown's Interrupt List

Sehr nette Übersicht der Interupts, vielleicht schau ich mir das mal dannach an :stupid: Aber die Opcode Datei konnte ich nicht finden... :cry:

Aber ich wühle mich durch die Referenze von Intel um da mal halbwegs durchzusteigen...

Nun hab ich auch so ein schönes Mehr-Byte OpCode-Beispiel

Das wär z.b. $0f (erstes Byte)...
da können viele andere Operationen dahinterstecken, die nichtmal wirklich was gemeinsam haben Bsp.:
  • $A3 (BT-Bit Test)
  • $06 (CLTS)
  • $A2 CPU Identification
  • $A5 CVTPS2PD
Diese ganze Sache ist ganz schön kompliziert und wenn es dann um 64Bit Register/Wertezuweisungen geht, dann seh ich nur noch Bahnhof...

Die Intel-Doku ist zwar sehr umfangreich, aber sehr unübersichtlich, nungut die ersten 2 Bücher hab ich schon überflogen um mir einen Überblick über die Thematik zu verschaffen...

Zitat:

Zitat von Muetze1
... welche du dir auch in Buchform von Intel kostenlos zusenden lassen kannst.

Und diese Doku kann man sich in Papierform kostenlos zuschicken lassen?
Mich würd mal interessieren wie die die 9 Bücher á 700 Seiten vorbeibringen :D

Bye Christian

Muetze1 31. Aug 2007 11:18

Re: Suche Oppcode => ASM Reference...
 
Zitat:

Zitat von Kedariodakon
Zitat:

Zitat von Muetze1
... welche du dir auch in Buchform von Intel kostenlos zusenden lassen kannst.

Und diese Doku kann man sich in Papierform kostenlos zuschicken lassen?
Mich würd mal interessieren wie die die 9 Bücher á 700 Seiten vorbeibringen :D

Per UPS Packet. Einfach bestellen und sie senden es dir umsonst zu (Intel Customer Care). Ich habe das Packet bekommen und es ist einfach handlicher als das PDF, vor allem da es handliches A5 Packet ist.

Kedariodakon 31. Aug 2007 11:29

Re: Suche Oppcode => ASM Reference...
 
Hast du dir nur eins oder mehrere schicken lassen?

Bye Christian

Edit: Gleichmal ne Frage hinten dran, gibt es ne Testumgebung um ASM-Code für 64Bit zu testen ohne einen 64Bit Prozessor zu haben?

Chewie 31. Aug 2007 11:46

Re: Suche Oppcode => ASM Reference...
 
Zitat:

Zitat von Kedariodakon
Edit: Gleichmal ne Frage hinten dran, gibt es ne Testumgebung um ASM-Code für 64Bit zu testen ohne einen 64Bit Prozessor zu haben?

Sowas sollte mit einem Hardware-Emulator gehen. Bochs wäre so einer.

divBy0 31. Aug 2007 11:48

Re: Suche Oppcode => ASM Reference...
 
Kann man denn 64-Bit auf 32-Bit-Systemen emulieren?

Ich hab sowas schon mal mit VMWare versucht, und da gabs dann ne Fehlermeldung wegen 32-Bit-Hostsystem.

Muetze1 31. Aug 2007 12:08

Re: Suche Oppcode => ASM Reference...
 
Zitat:

Zitat von Kedariodakon
Hast du dir nur eins oder mehrere schicken lassen?

Mehrere auf einmal - die komplette Manual. Ich kann dir heute Abend mal ein Foto schicken...

Zitat:

Zitat von divBy0
Kann man denn 64-Bit auf 32-Bit-Systemen emulieren?

Ich hab sowas schon mal mit VMWare versucht, und da gabs dann ne Fehlermeldung wegen 32-Bit-Hostsystem.

Bochs: simulierte afair die CPU in Software - also samt Instruktionen. VMWare ist eine Virtuslisierungslösung und lässt den Code in einer virtuellen Box auf der Host CPU ablaufen. Daher ist bei VMWare deine CPU entscheidend. Dafür ist Bochs auch deutlich langsamer als VMWare...

divBy0 31. Aug 2007 12:38

Re: Suche Oppcode => ASM Reference...
 
Nicht schlecht... muss ich mir anschauen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz