ASPROTECT 2.x 脱壳
方法一
用OD载入目标,去除调试标志.打开内存异常项,通过N个异常后到程序的入口
最后一个异常发生时, retn F2下断,Shift+F9运行,注意堆栈看到ASCII ""的第三行地址下断!SHIFT+F9
,最后一个异常发生后直接在CODE段下f2断点,再shift+f9就可以了:
方法二
方法一不行,试试:
OD设置:忽略除int3之外的其它异常,载入目标:
出现! //第一次也是最后一次INT3异常 如:
F9运行后中断下来:
0103700B 90 NOP 异常中断
0103700C EB 01 JMP SHORT 0103700F
0103700E 6966 81 FE47467>IMUL ESP, DWORD PTR DS:[ESI-7F]
注意堆栈中数据跟随-如: 0012FF58 0012FFE0 指针到下一个 SEH 记录
0012FF5C 004BAAF0 SE 句柄 //右键对004BAAF0转存中跟随,下内存访问断点,Shift+F9!
0012FF60 F9E1E5CE
下内存访问断点.最下两次F2断点,清除所有断点;
异常中断在code段下F2断点,然后shift+f9,到达OEP
其实有些壳不止这么简单......我只写关键的..不是很懂写此类的....
关于这个壳我脱个十来次吧.经验在于修复,查找真正的OEP,有时你找到的不一定是真的OEP.....还偷取代码....关于修复就更加难总结了
不知那位前辈能够出来为我们总结一下...关于查找IAT及查找被偷取的代码;
SVKP 1.3x
听说抽代码抽得历害,怕怕了,我实际中也没搞过几次.....
.
一、避开IAT加密,处理输入表
命令行下断:bp GetModuleHandleA+5,Shift+F9 通过所有异常,断下后取消断点,Alt+F9返回!
二Ctrl+F搜索特征码,搜索所有命令:mov dword ptr ds:[edi],eax
来到代码处: 用SVKP 1.32插件去下花指令!并修改反代码
方法即是:把popad和mov dword ptr ds:[edi],eax翻转下,nop掉原先的popad
2、Ctrl+F搜索特征码,搜索所有命令:
cmp dword ptr ds:[ebx],251097CC //用来处理特殊加密
如:
0FEE0F64 813B CC971025 cmp dword ptr ds:[ebx],251097CC //F2,Shift+F9到这,然后F8(见CALL就F7进),有回跳的就让它回跳!
0FEE0F6A EB 03 jmp short 0FEE0F6F //改jmp 0FEE0FFA
0FEE0FF4 /0F84 EB300000 je 0FEE40E5 //找到这里!
0FEE0FFA |60 pushad ★这是我们想要的
继续bp GetModuleHandleA+5,Shift+F9 通过所有异常,断下后取消断点,Alt+F9返回!
********************************************************************************************
下命令行断点hr 0012FFB0,Shift+F9中断3次!
取消断点!!!
命令行下tc ebp==12FFC0(12FFC0=12FFC4-壳入口处的ESP值) //到达OEP
修复也是猛费事的,言语不通,很难总结出来,
当然还有其它方法,希望大家也透露一下你们脱这二个壳当中的技巧。。。
供我们进步,别老让咱们变菜鸟。。。。咱们应该有进步才行啊,对吧,不要总是原地踏步吧!
也希望高手总结一下修复的经验了。要不你们老了,这么多经验不传给人会很可惜的对吧 。。。。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课