p.19 表層解析-ファイル形式の判別(「初めてのマルウェア解析」)
2.1ファイル形式の判別
バイナリエディタ
- HxD(Windows)
https://mh-nexus.de/en/hxd/
HxDでHxDを開いてみると、
ファイルの先頭2バイトがMZ(4D 5A)となっていることがわかる。
- xxd(Linux)
UbuntuでxxdコマンドでHxDを開いてみると、
$ xxd -g 1 HxD.exe | less
こちらでも、ファイルの先頭2バイトがMZ(4D 5A)となっていることがわかる。
ファイル識別ツール
- fileコマンド(Linux)
# 32ビットの実行ファイル(PE32) $ file hello86.exe hello86.exe: PE32 executable (console) Intel 80386, for MS Windows # 64ビットの実行ファイル(PE32+) $ file hello64.exe hello64.exe: PE32+ executable (console) x86-64, for MS Windows # 64ビットの実行ファイル(PE32+)で、GUI $ file HxD.exe HxD.exe: PE32+ executable (GUI) x86-64, for MS Windows
https://ntcore.com/files/CFF_Explorer.zip
ダウンロードしたzipを展開して、
"CFF Explorer.exe"
これを実行するだけ、
そして、Openで調べたいファイルを選択すると、
File type | Portable Executable 64 |
File type | Portable Executable 32 |
MD5 | 11BFE8942E084DF75524F56204454199 |
SHA1 | 8FE3F4827F21E331AAFA0FA2AA8B2FE562E65CD8 |
とか表示してくれる。
が、
ConsoleなのかGUIなのかは表示してくれない気がする。
Python
python-magicモジュールを使う。
>>> import magic >>> magic.from_file(r'./hello86.exe') 'PE32 executable (console) Intel 80386, for MS Windows' >>> magic.from_file(r'./hello64.exe') 'PE32+ executable (console) x86-64, for MS Windows' >>> magic.from_file(r'./HxD.exe') 'PE32+ executable (GUI) x86-64, for MS Windows'