12


3

ARMアーキテクチャ用のobjdumpの使用:ARMへの逆アセンブル

オブジェクトファイルがあり、それを逆アセンブルしようとしています。 私が使用するとき:

objdump -d example.o

`elf64-x86-64`のファイル形式のコードでアセンブリを取得します。

これをARMに分解しようとしていますが、これをどうやってやるのですか?

4 Answer


8


ARMコードを逆アセンブルしたい場合は、ARMツールチェーンが必要です。これが私が得たものです。

これができたら、objdumpの代わりにarm-elf-objdumpを使用できます。 私が使用したコマンドは

arm-elf-objdump -D -b binary -marm binaryfile.dat

マンページを見ると、「-b」の後にファイルタイプが表示されます。 .oファイルを分析したい-bを伝える方法がわかりません。 「-marm」は、CPUがARMであることを示します。

これがお役に立てば幸いです。


6


適切なターゲットで `binutils`をコンパイルして、ARMを逆アセンブルする方法を知っているbinutils objdumpバイナリを取得します。

たとえば、 。/ configure --enable-targets = all

ターゲットを選択し、ターゲットに対応した新しい「objdump」バイナリを作成して使用します。 ターゲティングの詳細については、「binutils / README」ファイルを参照してください。

objdump -D t3c # stock binary
objdump: t3c: File format not recognized

vs.

./../../binutils-2.22/binutils/objdump -D t3c # latest compiled from source with all targets
In archive t3c:

t3c:arm:     file format mach-o-le


Disassembly of section .text:

00002d94 :
    2d94:   e59d0000    ldr r0, [sp]
...


3


ELDKをインストールし、arm-linux-objdumpを使用します。 x86のみを認識するプログラムを使用してARM命令を逆アセンブルしようとしています。


3


最初に `arm-linux-gnueabi-gcc`を使用して、armのファイルをクロスコンパイルする必要があります。 ネイティブobjdumpを使用しています。 armオブジェクトファイルを逆アセンブルするには、 `arm-linux-gnueabi-objdump`を使用します。 お役に立てれば