[原创]nPack压缩壳细脱
[文件]:附件中,文件大小 13,312 字节,WinRoot的Dll_Load.exe
[作者]:PeaceClub
[声明]:只是给初学者一个Demo
过程阐述:
[窥视]:
用lordpe,打开section文件列表
最后一个 .nPack就是壳的解码段,原文件的段信息保存良好.
[行动A Dump]:
用Ollydbg打开Dll_load.exe,经调试分析
看了上面清晰的壳解码流程后,同志们应该知道如何去脱壳了吧.
OK,行动吧.建议采取的方法是光标到004062A9 dll加载处,F4
此刻脱壳是最清爽的.
OEP?oep呢?请看:
所以oep应该在 dword ptr [406f3c]+ dword ptr [406e00],直接Ctrl+G,输入[406f3c]+[406e00],Ctrl+A,
还等什么啊?脱壳吧.(请勿关闭刚才的ollydbg,后面还要用.)
lordpe或ollydump(ollydump中不要选择自动修复IAT)上,oep是1D60,修正一下,保存到dump.exe
[行动B IAT]:
此刻就能运行了吗?回答:No.因为iat地址还是指向在壳的地址上呢.
所以我们的工作是,寻找IAT开始.
在ollydbg数据区,Ctrl+G到4031c8(上面标记的那个api地址),向下滚动看到
看到第一个dll名MFC42.DLL的开始地址是 403A18,OK,我们向上搜索183A0000,找到后,根据iat结构,我们知道-0xC处就是我们iat的开始描述,结果是403798,好的,我们打开dump.exe,把iat的开始地址修改为 00003798,保存.
试一下,能运行了吧! 结束了?
当然,你可以选择结束.但如果作为完美主义者,那继续Go on
[行动C 文件优化]:
lordpe打开dump.exe,你会发现其实.nPack段的数据实际现在没用了,你可以放心cut掉,记住此section开始的位置,0x00006000,先把.nPack段擦除,然后拿16进制编辑器,把从0x6000往后的数据全部删除,保存.
看看文件大小24,576字节(原文件大小),
Lordpe Rebuild一下 13239字节.
[行动D 保护眼睛]:
休息一下,享受一下,身为菜鸟的你信心增长了吗?为自己的成功自豪吧!
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!