Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Disassembler gibt's die noch (https://www.delphipraxis.net/187610-disassembler-gibts-die-noch.html)

p80286 14. Dez 2015 17:34

Disassembler gibt's die noch
 
Vor vielen Jahren, als Programme noch klein waren und Betriebssysteme noch mit 3 Buchstaben benannt wurden, gab es einige Disassembler die für kleines Geld recht ordentliche Leistung boten. Mit rudimentären Assembler-Kenntnissen, konnte man da einigen Programmen ganz gut über die Schulter schauen.

Gibt's so etwas auch heute noch oder ist man da ohne intime Kenntnisse des Prozessors, und der verschiedenen Spezialbefehlssätze vollkommen aufgeschmissen?

Gruß
K-H

BUG 14. Dez 2015 17:47

AW: Disassembler gibt's die noch
 
Heute bist du vermutlich mit einem Debugger besser dran. Oder anders: jeder Debugger hat einen Disassambler dabei und während der Ausführung hineingucken ist bei den heutigen Code-Größen angenehmer.

Der Gold-Standard ist IDA Pro, OllyDbg ist unter Windows beliebt und von radare hab ich positives gehört.

nuclearping 14. Dez 2015 18:11

AW: Disassembler gibt's die noch
 
X64DBG wäre noch erwähnenswert. Nicht vom Namen abschrecken lassen, er kann auch 32bit. :P

mensch72 14. Dez 2015 18:43

AW: Disassembler gibt's die noch
 
Heute ist es die hohe Kunst, wie gut man virtualisiert ohne das es "bemerkt" wird.
Wenn dann noch ein echter echter Bus und CPU Trace von der virtuellen Umgebung möglichst in Echtzeit aufgezeichnet wird, dann kann ich anschließend beliebig oft und beliebig schnell (von Einzelschritt bis das was die Hardware hergibt) mich durch den Code arbeiten. Früher reichte oft das parsen der (D)OS Interrupts und man wusste was passiert.

Heute analysiert man zuerst die verwendeten PE-Loader(gepackt, verschlüsselt,...) und dann die verwendeten Compiler&Frameworks (.NET, Java, MFC, MCL, FMX,...) und hat dann hoffentlich in seinem Analysetool schon die passenden Plugins. Echt gute kommerzielle (kleine) Sachen in ASM oder einfachem Plain"C" gibt es heute quasi kaum noch.
(eigentlich nur bei bösem Zeug nehmen sich die Schöpfer noch die Zeit so ganz tief in die ASM Trickkiste zu greifen)

Gegen Spezialhardware mit dualported RAM oder Analysetools auf Hardwarebene kann fast kein Debugschutz bestehen. Solange die Sache in Quasi Echtzeit einer simulierten 1,5GHz Dualcore CPU läuft(real dann eben nötig Quadcore besser 4GHz) und sich aufzeichnen lässt, ist es nur eine Frage des Aufwandes es für ein bestimmtes Ziel zu analysieren.

jaenicke 14. Dez 2015 19:27

AW: Disassembler gibt's die noch
 
Es gibt ja auch Dekompiler wie DeDe oder IDA, die aus Delphianwendungen gut kommentierten Assemblercode produzieren.

Zacherl 14. Dez 2015 22:50

AW: Disassembler gibt's die noch
 
Ist halt die Frage, was du genau machen willst.

Für professionelle Anwendung kommt wohl ausschließlich IDA in Frage. Dafür gibt es optional von HexRays auch noch einen Decompiler, der das Assembly in C Code übersetzt. Ist aber recht teuer der Spaß.

Um mal eben reinzuschnuppern reichen OllyDbg oder x64dbg voll und ganz aus. Decompiler kenne ich dafür allerdings nicht. Kommt dann auf den Compiler deines Targets an, ob sehr viel gebrauch von neueren (spezial-)Instructions gemacht wird, oder nicht.

himitsu 15. Dez 2015 08:54

AW: Disassembler gibt's die noch
 
Bedenke auch, daß frühe reine EXE nur 100 KB hatte und jetzt eine Delphi-EXE mit nur einer TForm mit TButton und dem EventCode
Delphi-Quellcode:
Beep;
schon gefühlte 80 MB sind ... da muß du gleich mal viel, viel, sehr viel mehr Assemblercode überblicken, bevor du den Beep überhaupt findest. :stupid:

p80286 15. Dez 2015 10:26

AW: Disassembler gibt's die noch
 
Zitat:

Zitat von Zacherl (Beitrag 1324452)
Ist halt die Frage, was du genau machen willst.

Gute Frage, in den meisten Fällen schauen mit welchen Werten ein Programm arbeitet. Oder wie ein Zugriff realisiert wird, der "offizell" gar nicht geht. Aber das aus reiner Neugierde!

Zitat:

Zitat von himitsu (Beitrag 1324477)
Bedenke auch, daß frühe reine EXE nur 100 KB hatte und jetzt eine Delphi-EXE mit nur einer TForm mit TButton und dem EventCode
Delphi-Quellcode:
Beep;
schon gefühlte 80 MB sind ... da muß du gleich mal viel, viel, sehr viel mehr Assemblercode überblicken, bevor du den Beep überhaupt findest. :stupid:

Das ist, was mich abschreckt mein letzter (DISASM hieß er glaube ich) hat mir da eine enorme Menge an Arbeit abgenommen.

Zitat:

Zitat von mensch72 (Beitrag 1324430)
Früher reichte oft das parsen der (D)OS Interrupts und man wusste was passiert.

Auf der Stufe bin ich hängen geblieben.

Zitat:

Zitat von jaenicke (Beitrag 1324431)
Es gibt ja auch Dekompiler wie DeDe oder IDA, die aus Delphianwendungen gut kommentierten Assemblercode produzieren.

So richtig erschließt sich mir nicht der Unterschied zwischen Disassembler und Decompiler, aber auf den ersten Blick scheint IDA mir gut in den Kram zu passen.

Vielen Dank! mal schauen ob ich da noch durchsteige.

K-H

Neutral General 15. Dez 2015 10:37

AW: Disassembler gibt's die noch
 
Zitat:

Zitat von p80286 (Beitrag 1324497)
Zitat:

Zitat von Zacherl (Beitrag 1324452)
Ist halt die Frage, was du genau machen willst.

Gute Frage, in den meisten Fällen schauen mit welchen Werten ein Programm arbeitet. Oder wie ein Zugriff realisiert wird, der "offizell" gar nicht geht. Aber das aus reiner Neugierde!

Verstehe nicht so genau was du da erreichen willst. Kannst du mal ein Beispiel nennen?
Habe das Gefühl, dass das heute nicht mehr relevant ist.

Zitat:

Zitat von p80286 (Beitrag 1324497)
So richtig erschließt sich mir nicht der Unterschied zwischen Disassembler und Decompiler, aber auf den ersten Blick scheint IDA mir gut in den Kram zu passen.

Disassembler: Maschinencode => Assemblercode
Decompiler: Maschinencode/Assemblercode => (Pseudo-)Hochsprache

jaenicke 15. Dez 2015 11:21

AW: Disassembler gibt's die noch
 
Wobei der Unterschied zwischen reinem Disassembler und Decompiler fließend ist.

DeDe kann zum Beispiel keine Hochsprachenquelltexte erzeugen, bereitet den Assemblerquelltext aber auf und extrahiert Events aus Formularen einzeln usw., so dass die Struktur wieder ähnlich der des ursprünglichen Delphiprogramms ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.
Seite 1 von 2  1 2      

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