DLL 文件脱壳 ¶
这里需要联系上篇的 手动查找 IAT 并使用 ImportREC 重建
例题文件你可以点击此处下载: unpack_dll.zip
因为Dll
脱壳需要这一步骤. Dll
脱壳的最关键的步骤在于使用LordPE修改其Dll的标志
, 用LordPE
打开UnpackMe.dll
, 然后在特征值那里点击...
, 然后取消勾选DLL
标志, 保存后, 系统就会将该文件视作一个可执行文件.
我们将UnpackMe.dll
后缀名改成UnpackMe.exe
, 然后用 OD 载入.
一般在入口点, 程序都会保存一些信息, 这里就很简单, 只作了一个cmp
. 要注意的一点是, 这里的jnz
跳转直接就跳到了unpacking
过程的末尾. 因此我们需要修改寄存器的z
标志来使得跳转失效. 同时在unpacking
过程的末尾设下一个断点以避免脱壳完然后直接运行.(程序会断在这个断点上, 但是脱壳已经完成, 代码都很清晰)
Dll
脱壳的基本步骤跟exe
文件脱壳一样, 而在重建IAT
时, 需要照着上篇 手动查找 IAT 并使用 ImportREC 重建 所说的那样, 手动找到IAT
表并用ImportREC
进行重建. 只是要注意, 在脱壳完 dump 后, 要记得用 LordPE 把DLL
标志恢复过来并将文件后缀名改为.dll
.