aspr 2.11 ske加壳之某vb程序脱壳
谨以此文献给遭受攻击的一蓑烟雨,祝早日恢复正常。
去掉了软件信息。
声明:只是感兴趣,失误及不妥之处还请各位大侠指出(越来越谦虚了)。
开始前先谢谢VolX和他的脚本。
一、oep
寻找oep脚本停在这里:
012903C4 /EB 01 jmp short 012903C7
012903C6 |69FF 74240826 imul edi, edi, 26082474
012903CC EB 02 jmp short 012903D0
012903CE CD20 669C52BA vxdjump BA529C66
012903D4 C6 ??? ; 未知命令
到code区段查找命令 jmp 012903C4
真正的oep:
00403A84 - E9 3BC9E800 jmp 012903C4
00403A89 095D 02 or [ebp+2], ebx
00403A8C 4B dec ebx
00403A8D B6 C9 mov dh, 0C9
00403A8F 0000 add [eax], al
00403A91 0000 add [eax], al
00403A93 0030 add [eax], dh
00403A95 0000 add [eax], al
00403A97 0040 00 add [eax], al
修复oep:
vb程序oep格式如下:
push 00xxxxxx
call 00xxxxxx
这两句下面就是数据了,aspr只抽这2句。
先第一句,按F8单步,并看堆栈窗口:
0012FFAE 00000000
0012FFB2 012903C4
0012FFB6 00404C90 ASCII "VB5!6&vb6chs.dll" 这里是第一句push的地址
0012FFBA 0043E33A FantasyD.0043E33A
第二句是个call,许多人总结了许多方法找到call的真实目的地,其实有一个非常简单的方法:code区段下内存访问断点。道理是什么?想想就知道了。
这时,code区段下内存访问断点,运行,中断在这里:
00403A7C - FF25 44124000 jmp [401244] ; msvbvm60.ThunRTMain
00403A82 0000 add [eax], al
00403A7C就是oep第二句call的地址了。
oep是:
push 00404C90
call 00403A7C
二、iat
重新运行程序,运行iat修复脚本,waiting and waiting 修复完成后,到达00403A84,恢复oep:
push 00404C90
call 00403A7C
三、结束
dump,fix,ok。
四、破解
不符合本文标题内容,略。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课