2012-10-23 4 views
11

Ist es möglich, eine vollständige Disassembly (die als Eingabe für einen Assembler dienen kann) einer ausführbaren Datei zu erhalten?Vollständige Disassemblierung einer ausführbaren Binärdatei erhalten

Wenn ich otool -tV a.out verwende, sehe ich nur den Textabschnitt. Andere Abschnitte wie Daten sind nicht sichtbar.

Wenn ich gdb verwende, erfordert der Befehl disassemble eine Start- und eine Endadresse. Allerdings weiß ich nicht, wie man die Start- und die Endadresse einer Binärdatei (zB a.out) herausfinden kann.

Ich versuche, eine ausführbare Datei zu zerlegen, mit dem Assemblercode zu basteln und dann wieder zusammenzusetzen. Ist das möglich?

Es würde auch helfen, wenn man die Namen aller Abschnitte in einer Binärdatei herausfinden kann.

Antwort

0

können Sie das Zitat Hopper Disassembler

verwenden:

Hopper ist ein Reverse-Engineering-Tool für den Mac, die Sie auseinandernehmen, dekompilieren und Debuggen von 32/64-Bit Intel Mac ausführbaren Dateien können.

Es kostet $ 59, aber Sie können eine Demo herunterladen, um zu überprüfen, ob es die Arbeit zuerst erledigt.

EDIT

Es scheint, dass Sie dies mit otool auch erreichen können, the manual nach.

.B -d Zeigt den Inhalt des Abschnitts (_ \^_ DATA, _ \^_ data) an.

haben auch einen Blick auf this short blog post, die die genannte Verwendung von otool beschreibt, und wie können Sie objdump verwenden, wie von @Sjlver erwähnt.

+0

'otool -d' sicherlich zeigt den Datenbereich. Aber das ist nicht alles. Wenn die ausführbare Datei eine Methode wie folgt aufruft: 'printf (" ABCD ")', kann ich die Deklaration der Zeichenfolge "ABCD" in der Assembly nirgendwo finden. – mynk

+0

Haben Sie Hopper dann versucht? – jurgemaister

+1

Ich suche eine kostenlose Lösung. Also habe ich nicht geschossen. – mynk

-2

Unter Linux können Sie versuchen, objdump -D myprog

Hinweis zu verwenden, dass dies nur funktioniert, wenn das Programm nicht unregelmäßig Steuerfluss enthält. Insbesondere Malware wird oft verschleiert, z. durch Einfügen von falschen Bytes, die dann übersprungen werden.

Wenn Sie auf diese Art von Programmen abzielen, habe ich gehört, dass eines der besten Produkte zu verwenden ist IDA pro.

+2

Dies sollte ein Kommentar sein, da es nicht versucht, die Frage zu beantworten. – jww

2

Auf Mac können Sie (möglicherweise durch Homebrew) binutils installieren, die gobjdump enthält. Sie können jedes Binärprogramm nach der Installation deinstallieren. Es ist offen und kostenlos.

+0

brauen install binutils arbeitete für mich – brthornbury

+0

Dies sollte ein Kommentar sein, da es stirbt nicht versuchen, die Frage zu beantworten. – jww

17

Versuchen Sie diesen Befehl, erinnere ich es irgendwann zurück mit:

otool -tvV a.out 
+1

Dieser Befehl hat mir in der Vergangenheit sehr geholfen, ebenso wie 'otool -IvV a.out' (zeigt die indirekte Symboltabelle an). Außerdem gibt es den Schalter _-d_ für Informationen zum Abschnitt _data_. Weitere Informationen in: 'man otool' – andwagon