web-dev-qa-db-ja.com

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

オブジェクトファイルがあり、それを分解しようとしています。私が使うとき:

objdump -d example.o

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

これをARMに分解しようとしていますが、これを行うにはどうすればよいですか?

14
Steve

ARMコードの逆アセンブルを行う場合は、ARMツールチェーンを使用することをお勧めします。これは私が入手したものです。

http://bb.osmocom.org/trac/wiki/toolchain

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

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

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

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

8
qiuhan1989

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

http://www.gnu.org/software/binutils/

./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 <start>:
    2d94:   e59d0000    ldr r0, [sp]
...
6
soulseekah

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

4
V.ben

[〜#〜] eldk [〜#〜] をインストールし、arm-linux-objdumpを使用します。 x86しか認識しないプログラムを使用して、ARM命令を分解しようとしています。

3
Jonathan