好友
阅读权限255
听众
最后登录1970-1-1
|
from:pediy.com
作者:wangdell
发个破文,否则白忙了。我的方法比较笨且不完美,高手飘过。
顺便膜拜下几位牛人 海风,fxyang,nisy, humourkyo。crackme为humourkyo所做,被nisy加了3层牛壳,后据称被海风,fxyang脱掉,并被海风爆破vmp。
加壳后/脱壳后地址:http://www.unpack.cn/viewthread. ... mp;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运行,观察堆栈[esp]中的数值,并记录(只需记录最后两次中断时的数值)
也可以用如下脚本记录
代码:
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 [esp]
jmp run_to_bp
ret
在进入“注册失败”对话框前的[esp]处加标签为MessageBox,由于有api地址加密,此处为MessageBox地址解密处。
代码:
00432EC1 >E8 FEDAFFFF call004309C4 ;MessageBox
在此之前的那个[esp]加标签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,观察堆栈[esp]中的数值,当[esp]==0041AAEC时,更改eax为1,继续运行,此时出现“注册成功”对话框。
4、patch
按常规应在0041aaec处patch,但可恶的是,这部分是在vm中动态解码的,只好在retn处patch。
方法是,每次执行到retn,比较[esp]中数值是否为0041AAEC,如是,则更改eax为1即可。
海风提示,注意到由于有随机校验,在此处patch不稳定,偶尔会自动退出。还没找到可过校验的patch方法。
再次感谢海风,hexer等人,让我能近距离接触vmp1.63 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|