FromNandの日記

自分的備忘録

【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