DLL 文件脱壳

这里需要联系上篇的 手动查找IAT并使用ImportREC重建

例题文件你可以点击此处下载: unpack_dll.zip

因为Dll脱壳需要这一步骤. Dll脱壳的最关键的步骤在于使用LordPE修改其Dll的标志, 用LordPE打开UnpackMe.dll, 然后在特征值那里点击..., 然后取消勾选DLL标志, 保存后, 系统就会将该文件视作一个可执行文件.

12.png

我们将UnpackMe.dll后缀名改成UnpackMe.exe, 然后用OD载入.

13.png

一般在入口点, 程序都会保存一些信息, 这里就很简单, 只作了一个cmp. 要注意的一点是, 这里的jnz跳转直接就跳到了unpacking过程的末尾. 因此我们需要修改寄存器的z标志来使得跳转失效. 同时在unpacking过程的末尾设下一个断点以避免脱壳完然后直接运行.(程序会断在这个断点上, 但是脱壳已经完成, 代码都很清晰)

Dll脱壳的基本步骤跟exe文件脱壳一样, 而在重建IAT时, 需要照着上篇 手动查找IAT并使用ImportREC重建 所说的那样, 手动找到IAT表并用ImportREC进行重建. 只是要注意, 在脱壳完dump后, 要记得用LordPE把DLL标志恢复过来并将文件后缀名改为.dll.