吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9833|回复: 8
收起左侧

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

[复制链接]
Hmily 发表于 2008-8-7 16:06
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

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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
距离很远啊,只能远观了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-22 04:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表