KENJI’S BLOG このページをアンテナに追加 RSSフィード

Freezed...

2009-09-07

64ビット環境がないけど64ビット用バイナリを逆アセンブルしたい場合は…

もちろん64ビット環境があるに越したことはないのですが、仮に無くても逆アセンブルさえできればなんとかなるので、ndisasmの64ビットオプションで頑張れます。

http://www.nasm.us/

http://www.nasm.us/pub/nasm/releasebuilds/2.07/win32/nasm-2.07-win32.zip

ターゲットとなるアプリケーションはこの辺りから。

C:\Temp\nasm-2.07>ndisasm.exe -e 1024 -b 64 -p amd prog1.exe > dis.txt
C:\Temp\nasm-2.07>type dis.txt|more
00000000  4883EC28          sub rsp,byte +0x28
00000004  FF1536110000      call qword [rel 0x1140]
0000000A  4C8D05AF110000    lea r8,[rel 0x11c0]
00000011  488D15B8110000    lea rdx,[rel 0x11d0]
00000018  488BC8            mov rcx,rax
0000001B  4533C9            xor r9d,r9d
0000001E  FF1524110000      call qword [rel 0x1148]
00000024  33C0              xor eax,eax
00000026  4883C428          add rsp,byte +0x28
0000002A  C3                ret
0000002B  CC                int3
0000002C  CC                int3

EXEファイルの先頭から400hからコードが始まっているので、開始場所を1024に指定し、amdの64ビットとして逆アセンブルした結果をdis.txtへ保存。中を読むとちゃんとrspとかになっている。あとは地道に読めばなんとかなるはず。

ちなみに64ビット環境があるなら素直にWinDbgがお得。

熊谷隆史熊谷隆史 2011/01/17 09:35 こんにちは。
素朴な疑問ですが、普通にDUMPBINでいいのではと思うのですがいかがでしょう。

> dumpbin /disasm /rawdata /out:dis.txt prog1.exe