Disassemblieren von PowerPC code



  • Hallo zusammen,
    ich habe das Problem, dass ich Binärcode für ein embedded-board mit einem PowerPC-Prozessor disassemblieren muss. Als Arbeitsrechner habe ich einen Linux-Rechner. Also multiarch-objdump steht zur Verfügung. Das binary ist gestrippt und beim einfachen Aufruf gibt es die Antwort:

    File format not recognized
    

    was und wie muss ich es angeben mit objdump -i bekomme ich eine etwas unübersichtliche Liste. Oder ist für meine Aufgabe ein ganz anderes Tool eher geeignet?

    Vielen Dank

    /christian



  • Versuch mal mit IDA Pro (kostet Geld, Auch für Linux) oder IDA Free (kostenlos, nix mit Linux nur Windows).



  • gdb gnu debugger eventuell...



  • Das ist ohne genaue Informationen über die Datei nicht mit Sicherheit zu sagen. Was sagt file $dateiname ?

    Wie dem auch sei, was objdump an powerpc-Zeug kennt, ist

    elf32-powerpc
    elf32-powerpcle
    elf64-powerpc
    elf64-powerpcle

    (rauszukriegen mit objdump -i | grep powerpc). Du könntest also objdump -m $eins_von_den_vieren -d $dateiname versuchen. Das wird aber nur funktionieren, wenn es sich um ein ELF-Binary handelt, in welchem Fall ich erwartet hätte, dass objdump das Format selbst erkennt.

    Wenn es sich um PEF handelt, sollte hte damit umgehen können.



  • Danke erst mal an alle für die Antworten.
    Also wenn ich file auf mein Binary loslasse, bekomme ich diese Meldung:

    u-boot.bin: u-boot legacy uImage, - 14:19:41), 808530734 bytes, Tue Apr  3 05:29:54 2029, Load Address: 0x30312028, Entry Point: 0x4D617220, Header CRC: 0x552D426F, Data CRC: 0x32322032
    

    Also, da ist alles gestrippt und wegoptimiert. Es wird zwar auch noch ein ELF dazu erzeugt, damit man was zum vergleichen hat, vermute ich, aber inwiefern das dann hilft ist mir auch noch nicht klar. Wie kann man denn hte mitteilen, dass es sich bei der Datei um PowerPC-Code handelt? Damit der Opcode wenigstens richtig interpretiert wird.

    Vielen Dank nochmal

    Gruss Christian



  • "u-boot" steht für "universal bootloader." Mit einiger Wahrscheinlichkeit flanscht das Build-System an die generierte ELF-Datei stumpf u-boot dran, so dass das Board direkt in den darin enthaltenen Code bootet.

    Lass objdump einfach auf die ELF-Datei los. Wenn du nicht grad u-boot debuggen willst, steht da der für dich interessante Teil drin. Ansonsten kann man so ein uImage bestimmt auch wieder auspacken, aber damit kriegst du im Zweifel auch nur das wieder, was in der ELF-Datei schon steht.


Log in to reply