【objdump】フラットなバイナリファイルをディスアセンブルする方法
これまでPEやELFといったファイルは解析してきたが、それらの形式に沿っていないファイルを解析したことは少なかったのでまとめておく。
ちなみに環境はx64を前提とする。
https://stackoverflow.com/questions/1737095/how-do-i-disassemble-raw-16-bit-x86-machine-code
【Ubuntuの場合】
フラットなバイナリファイルの作り方。
-fno-pieがないと「__x86.get_pc_thunk.ax」などが入ってしまう。
gcc -m32 -nostdlib -fno-pie -c file.c(cファイル)
objcopy --only-section=.text --output-target binary file.o(上でできたオブジェクトファイル) file-name(フラットなバイナリファイル)
OSのMBRに書き込んだり、リアルモードで動作させる場合のバイナリ(16bit)をディスアセンブルする場合。
objdump -D -b binary -mi386 -Maddr16, data16 file-name
フラットなバイナリファイル(32bit)をディスアセンブルする場合。
objdump -D -b binary -mi386 file-name