Hmily 发表于 2008-8-7 16:06

一个加vmp1.63的程序的爆破

from:pediy.com

作者:wangdell


发个破文,否则白忙了。我的方法比较笨且不完美,高手飘过。
顺便膜拜下几位牛人 海风,fxyang,nisy, humourkyo。crackme为humourkyo所做,被nisy加了3层牛壳,后据称被海风,fxyang脱掉,并被海风爆破vmp。

加壳后/脱壳后地址:http://www.unpack.cn/viewthread.php?tid=27643&page=1#pid285106

原因:海风提示可以爆破,由于正在研究vmp1.63,于是尝试下vmp1.63的爆破。

过程:
中间有些弯路,就不记述了。已知是vmp1.63(不过有点奇怪,与我自己加的1.63最大保护的IAT加密有点不同)

1、寻找VM_engine
bp MessageBoxA后,中断在“注册失败”的错误对话框中,alt-F9返回。
单步跟踪,找第一个retn xx

代码:
0040CC35C2 2C00 retn2C ; vm_execute
此VM_engine有点奇特,竟然有两处vm_opcode的调用入口,我也是在找不到vm_retn时,比对esi,并多次跟踪时才发现的,这耽误了不少时间。
继续单步跟踪,找到另一处retn xx。

代码:
0040C09CC2 2C00 retn2C ; vm_execute1
分别增加标签vm_execute和vm_execute1

2、寻找VM_retn
重新运行,先中断在MessageBoxA处,alt-f9返回。
使用下面od脚本

代码:
dbh//hide od
BPHWCALL//clear hardware breakpoint
BC//clear software breakpoint
BPMC//clear Memory breakpoint

bp40cc35//vm_execute
bp40c09c//vm_execute1

log "VM Trace start!"
run_to_bp:
EOBbp_record
ESTO //step to bp(vmenginejmp)

bp_record:
log ecx
jmp run_to_bp
ret
查看script log window,最后一条指令为VM_retn,增加该标签。

代码:
0040AE9F >66:0FBCFA bsf di, dx ; vm_retn
单步跟踪到retn xx.

代码:
0040AF0DC2 2C00 retn2C ; retn
取消所有断点,在0040AF0D设置断点。
3、爆破尝试
shift-f9运行,观察堆栈中的数值,并记录(只需记录最后两次中断时的数值)
也可以用如下脚本记录

代码:
dbh//hide od
BPHWCALL//clear hardware breakpoint
BC//clear software breakpoint
BPMC//clear Memory breakpoint

bp40AF0D//vm_retn=>retn 2c

log "VM Trace start!"
run_to_bp:
EOBbp_record
ESTO //step to bp(vmenginejmp)

bp_record:
log
jmp run_to_bp
ret
在进入“注册失败”对话框前的处加标签为MessageBox,由于有api地址加密,此处为MessageBox地址解密处。

代码:
00432EC1 >E8 FEDAFFFF call004309C4 ;MessageBox
在此之前的那个加标签VMM_test

代码:
0041AAEC >68 6FCA8010 push1080CA6F ; VMM_test
为什么要修改此处eax,原因如下,猜测原有注册代码类似为:

代码:
call chkreg
test eax,eax
jz error_messagebox
jnzright_messagebox
我猜测MessageBoxA之前的那个虚拟机代码块为VM_test,所以修改它入口处的eax值(chkreg的返回值)

重新运行,shift-f9,观察堆栈中的数值,当==0041AAEC时,更改eax为1,继续运行,此时出现“注册成功”对话框。

4、patch
按常规应在0041aaec处patch,但可恶的是,这部分是在vm中动态解码的,只好在retn处patch。
方法是,每次执行到retn,比较中数值是否为0041AAEC,如是,则更改eax为1即可。

海风提示,注意到由于有随机校验,在此处patch不稳定,偶尔会自动退出。还没找到可过校验的patch方法。
再次感谢海风,hexer等人,让我能近距离接触vmp1.63

qinhao8 发表于 2008-8-7 16:19

近距离的接近vmp1。63 感谢hmily 的零距离接触

柯梦南 发表于 2008-8-8 00:10

谢谢提供,看完了,很有感触

fangtao 发表于 2008-8-21 14:07

谢谢,学到不少东西,

375505211 发表于 2008-8-23 09:07

Hmily色鬼的帖子不顶不行哈哈

jy3318007 发表于 2008-8-23 14:38

VMP 都能破解。这年头没东西是安全的。

呵呵呵 发表于 2010-8-5 14:46

热火朝天 发表于 2010-8-5 15:02

距离很远啊,只能远观了:lol
页: [1]
查看完整版本: 一个加vmp1.63的程序的爆破