[主题]:瓦解PELock 1.0x -> Bartosz Wojcik秀
[作者]:PeaceClub
[工具]:Ollydbg,OllyScript v9.2,OllyDump,LoadPE,Imprec
[文件]:演示文件为PELock 1.06保护的WinRoot的Dll_LoadEx
[说明]:PELock的壳代码混淆和保护能力还是挺优秀的,我向来对复杂的壳不愿意花时间去弄,但今天是个特殊的纪念日子,所以……,Action!
第一步:进入解压段
为了配合脚本及过程,请您忽略所有异常,除了C000001D (ILLEGAL INSTRUCTION)。
[动作]:ollydbg载入,停留在40605C
[动作]:F9运行
出现异常提示,点击"确定"
[动作]:Alt+M,查看内存,在DLL_Load模块的上两行00380000段下访问断点,Shift+F9
断点生效后停在:
第二步:IAT脚本修补:
调用ollyScript来运行下面的脚本,根据表的长度大小,需要点时间,当寄存器和代码不变化的时候,F12暂停执行
此例中代码显示窗停在
0038602D F3:AB REP STOS DWORD PTR ES:[EDI]
第三步:RemoteJump代码混淆修补:
脚本停止后,提示:
IAT Fix OK.Please Ctrl+G,then input EDI-1 to Patch Code Area!
CPU窗口显示:
[动作]:CPU窗口中Ctrl+G,输入Edi-1
不同机器申请空间不一样,我机器上是来到970000,粘贴以下二进制代码:
在970000新建EIP(光标移到970000,然后Ctrl+*)
[动作]:F4到修补代码最后的retn上
第四步:StolenCode修补:
在401000上下访问断点,F9运行,我们停留在:
看堆栈区域和cpu窗口代码,我们依照VC程序入口点进行修补,oep为401d60:
第五步:Dump & Fix IAT:
使用OllyDump进行脱壳,指定oep为1d60
[提示]:如果你是追求完美的人,请跳到第六部
Imprec中请选中"Use PE head From Disk(从磁盘获得PE头部)"选项,oep:1d60,自动获得输入表,Fix Dump即可
第六步:瘦身减肥,天天好心情:
经过观察,最后的section段是壳的代码,我们删除它,并删除从6000到文件结尾的数据,接着用第五步的imprec修复iat.
用工具Rebuild一下,最后大小13405字节,运行功能测试完全正常。
凑够六步,祝各位
六六大顺!