objdump und ARM vs Thumb

8

Ich versuche ein Objekt zu zerlegen, das für ARM mit gcc gebaut wurde. Leider versucht objdump zu erraten, ob der Code ARM und Thumb ist und es falsch interpretiert: es denkt, dass mein Code Thumb ist, wenn es tatsächlich ARM ist.

Ich sehe, dass objdump eine Option hat, um es zu zwingen, alle Anweisungen als Thumb ( -Mforce-thumb ) zu interpretieren, aber es hat keine, um den ARM-Modus zu erzwingen!

Das scheint mir eine wirklich seltsame Unterlassung zu sein, und es behindert ernsthaft meine Fähigkeit, Arbeit zu erledigen (ich bin auf einem eingebetteten Gerät und mein einziges Mittel zum Debuggen ist es, die Disassemblierung zu betrachten). Ich habe verschiedene Ansätze versucht, einschließlich objdump eine ARM-Architektur zu verwenden, die Thumb nicht unterstützt, aber nichts scheint zu funktionieren. Irgendwelche Ideen?

(Und ja, ich weiß, dass die Anweisungen wirklich ARM sind ...)

    
David Given 25.08.2011, 16:43
quelle

2 Antworten

3

arm-linux-gnueabi-objdump -marm -b binary -D macht den Trick für mich. Es behält zwar die Symbolinformationen nicht, es ist also nicht genau das, wonach Sie suchen, aber es gibt Ihnen das Disassemble, was ein Anfang ist.

    
JaviMerino 06.03.2013 14:29
quelle
0

Das klingt wie ein Fehler in Compiler / Linker oder Objdump. Normalerweise sollten die Symbole richtig markiert sein, wenn sie Thumb oder ARM sind und entsprechend demontiert werden.

Das heißt, es gibt ein paar Dinge, die Sie ausprobieren können:

  1. interpretiere Datei als einfache Binärdatei (-b binary -D) - dies deaktiviert die Symbolprüfung und zerlegt die ganze Datei als ARM. Nachteil: viel Müll in der Ausgabe, keine netten Adressen.
  2. Verwenden Sie IDA Pro . Selbst wenn es falsch rät, können Sie seine Entscheidung immer überschreiben. Außerdem ist es eine viel schönere Zerlegungsumgebung:)
Igor Skochinsky 25.08.2011 16:56
quelle

Tags und Links