只是对找入口点有帮助,本人菜鸟,请大家别笑话。
最日,群里一菜鸟问我,下面是他的原话:
“闹心死了。。。PESpin 0.3x - 0.4x -> cyberbob
交交我怎么脱吧。。。我都快疯了。。。 ”
(晕,本来我就菜,还问我)
这下可把我急得不行,因为我是群主,得给兄弟一个交待,一看程序是VB写的,我乐了!
因为VB的程序的特点使得找入口点很容易(受**oooo兄的启发呀)
不多说了,下面是我的解决方法(win2k,OD,hideOD):
1.忽略所有异常,跑一遍,按ALT+L(主要是看有哪些异常,sh****说的),按ALT+M(看到有“msvbvm60”模块,所以判断出是VB程序),完成了初步的侦察!
2.再用OD加载后到这里
00429087 > /EB 01 jmp short 0042908A
用ALT+m看一下,还没有“msvbvm60”模块。我想:程序运行之前,总得加载“msvbvm60”模块吧?
故在LoadLibrary末尾的retn下断(方法:在代码窗口,查找->所有模块中的名称->load.....).
3.本例子中经过一次异常,在LoadLibrary末尾断下来了,删除所有断点后,按F8
779EFA9E 3BC3 cmp eax, ebx//到这里
F8直到retn
779EFAD9 C3 retn //到这里
4.ALT+m,发现了“msvbvm60”模块,ALT+C到代码窗口,查找,所有->所有模块中的名称,这里我们输入ThunRTMain,于是会发现这一行:
6A28DE3E MSVBVM60 .text 输出 ThunRTMain
5.然后执行最重要的一步:CTRL+G 输入 6A28DE3E 对这个地方设断, 将 ThunRTMain 的第一个指令改为 retn(好让程序返回调用处)
6.接下来,就容易了,F9,断下,删除断点,让它执行retn完就到了
004011E4 68 601C4000 push 00401C60
004011E9 E8 EEFFFFFF call 004011DC ; jmp 到 MSVBVM60.ThunRTMain
004011EE 0000 add [eax], al //返回到这里
入口点的第三行呀!呵呵!!这时我们把对ThunRTMain的修改改回去,用OD自带的插件dump程序,入口点是11E4.用importrec修复即可。
7.总结:
VB程序的入口点前两句都是差不多的:
004011E4 68 601C4000 push 00401C60
004011E9 E8 EEFFFFFF call 004011DC ; jmp 到 MSVBVM60.ThunRTMain
如果我们将ThunRTMain的第一句改为retn,即可返回到程序的第三行。
(高人教我们,VC的在GetVersion末尾的retn下断,原理是一样的!)
8.还不知是不是 PESpin 0.3x - 0.4x 加的壳呢!用peid查一下,是PESpin 0.70 -> cyberbob!
(http://www.cracking.com.cn)
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法