linux でバイナリを逆アセンブルする方法

linux でプログラムをdisassembleする方法のメモです。

アセンブルする方法(その1)

定番のdisassembler、objdump コマンドを使います。

$ objdump -d  バイナリファイル > dump.txt

objdump コマンドは、大抵 binutils パッケージに入ってます。


通常のプログラムはもちろん、共有ライブラリ *.so とか

$ objdump -d  /lib/libc.so.6

カーネルモジュール *.ko も逆アセンブルできます。

$ objdump -d  /lib/modules/2.6.33-orig/kernel/arch/x86/oprofile/oprofile.ko 

アセンブルする方法(その2)

dissy という objdump のGUIがあります。それなりに使えます。

http://code.google.com/p/dissy/

アセンブルする方法(その3)

gdb で、"disas"コマンドを使います。

たとえば ファイル /bin/hoge のアドレス0x1000から0x2000を逆アセンブルする場合、

$ gdb /bin/hoge
(gdb) disas  0x1000 0x2000