オブジェクトファイルがあり、それを分解しようとしています。私が使うとき:
objdump -d example.o
elf64-x86-64
というファイル形式のコードでアセンブリを取得します。
これをARMに分解しようとしていますが、これを行うにはどうすればよいですか?
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であることを示します。
これがお役に立てば幸いです。
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]
...
最初にarm-linux-gnueabi-gcc
を使用してarmのファイルをクロスコンパイルする必要があります。ネイティブのobjdumpを使用しています。 armオブジェクトファイルを逆アセンブルするには、arm-linux-gnueabi-objdump
を使用します。お役に立てれば
[〜#〜] eldk [〜#〜] をインストールし、arm-linux-objdumpを使用します。 x86しか認識しないプログラムを使用して、ARM命令を分解しようとしています。