首页
社区
课程
招聘
[分享]VMProtect3.5.1反调试爆破之AntiVmp v1.0beta插件
发表于: 2025-11-14 16:20 20338

[分享]VMProtect3.5.1反调试爆破之AntiVmp v1.0beta插件

2025-11-14 16:20
20338

重要提示:下面是本人制作的VMProtect虚拟机逆向课程,点击下面的链接进入学习

VMProtect虚拟机逆向入门

VMProtect分析与调试器插件开发

距上次发帖已经过去一个多月了,VMProtect最新版本都已经到3.10.x了,果然更新的速度蛮快的,之前分析了VmProtect.3.9.4的简单流程,之所以叫简单,说明分析起来并不难,VmProtect的每次更新都会往壳里面加料,加的什么新的猛料我们不得而知,但是VMProtect3.5.1版本源码的泄露,作者一定会对代码进行更加大范围的修改,正如3.8.1的界面多了很多看不懂的选项。有了源码的加持,这对于开发分析插件来说,难度少了很多,于是我打算把这款插件分享给大家,由于是OD插件所以,只支持32位,32位程序,懂的都懂,面对庞大的数据,很容易出现内存不足的问题,在这里我也是卡了很久,分析小的流程还好,一碰到大流程,就莫名的奔溃,于是我,学乖了,内存可以重复利用的就定义为全局,不能重复利用的就及时释放,还有就是delete这个函数,经常会导致闪退,所以就能重复利用的内存就重复利用,少用delete,终于明白开发一个处理庞大数据的程序要考虑的东西好多,之前在测试代码的时候,用VMProtect加密堆栈操作类的指令的时候,也会出现加壳后秒退的问题。所以说任何东西不是一开始就完美的,得经过各种测试,修补,才能达到我们现在用起来一点瑕疵都没有。下面我介绍一下这个插件怎么用。

这里我在附件准备了两个测试样本,和Ollydbg调试器,为什么给调试器呢,因为将插件放在其他修改版中测试会出现莫名的错误,而且我还用了好多硬编码,所以还是不想做兼容,太烦!然后这两个样本,第一个是只加了代码变异虚拟化,第二个没有对代码处理,而是加了一层反调试外壳。

首先,我们把第一个讲解的样本CreakMe.vmp.exe拖入OD里面,还有一个未加壳的程序CreakMe.exe,里面的代码这里我就不贴了,拖进来之后是一个jmp直跳,我们单步一下,走到

这里就是插件的分析起点,直接右键AntiVmp-》Auto Analyse。这个选项是自动分析,他会分析整个流程块,我们也可以在某个地方下断点,那么他就会分析到断点的地方停止,分析过程中底下会有分析进度显示,如果分析的代码块指令过多,时间会比较长,当然分析的指令数量也是有一定限度的,这里我已经设置满足大多数情况了,这里分析并不是和以往的插件一样,静态分析,这里是先Trace记录数据,记录完成再进行分析,没分析完成之前不要操作OD,有可能会卡主,或者闪退,这里可以多打开一个OD,结合前面分析的代码,自己去调试,分析完成之后后如果没有出现这个 大家可以点击Auto Analyse下面的ReadCommands。出现之后我们直接双击他,就出现了,刚刚分析得出的一级指令, 这里总共有10列,分别是handler的地址,再讲第二个含义之前我先解释一下,三个轮转的寄存器,分别是ebp,esi,Dispatcher‌Reg。这里的ebp是根据2.x版本得出的,在他之前ebp寄存器始终都是用于存放临时变量的相当于esp,esi用于存放伪代码指针,Dispatcher‌Reg是3.x版本开始有的,这里刚好edi可以用,那么esp始终指向虚拟寄存器块,在这个版本这三个寄存器过段时间就会轮转,所以我们分析的时候,首先要确定他们的职责,介绍完了,我们看第二列就是handler执行前ebp的值,第三列是执行后的值,第四列是handler名称,第五六七列就是前面说的这三个寄存器现在对应的寄存器,第八列是这条handler执行前,前面执行了多少次,这对于定位代码非常有用,记得以前分析2.x版本的时候一条handler可以对应多个伪代码,是一对多,现在是多对多,执行同一个功能的handler可以有好多个,第九列就是对应伪代码的地址了,第十个是解密出来的虚拟寄存器编号或者常数的值。前面说了这个寄存器轮转就发生在VM_JmpEntry这个handler里面,从名字我们就可以看到他其实是以前的VmEntry,也只有VmEntry才对寄存器进行重新分配,还有一个VM_JmpEntry2,这个handler是镶嵌在VM_JmpEntry里面的,但是他的起始地址是在,举个例子

这个条指令开始的,所有VM_JmpEntry和VM_JmpEntry2共用了一部分代码,VM_JmpEntry2作用就是重新获取代码的地址,VM_JmpEntry比VM_JmpEntry2多了个寄存器轮转,这个程序我们是要让他输出Success而不是Failed,这里是给出了两个值0xABC和0xCDE,用cmp指令判断是否相等,相等则输出Success,显然给出的值不相等,所以我们就要找到模拟cmp指令的地方然后将标志寄存器zflag,改成1。

从分析出来的数据中,找到上面这个几个handler,就是模拟cmp指令了, 执行到VM_Nor32这条handler里面的and指令下一条就是修改zflag的时机了,将zflag,改成1。就能显示Success了。

我们再讲第二个样本test拖到OD里面,这个是反调试外壳,当然这个外壳也是被vm了,而且体量非常大,这个反调试外壳,并不是所有代码都vm,我们按照前面一样右键分析,分析完成之后我们转到代码界面,这时候很显然是正常代码但是加了很多垃圾代码,这边我们可以正常去分析,当然用不了多久,他又进入vm了,这里如果我们不想看这段没被vm的正常代码,可以使用执行到返回,再单步,进入到下一个分析起点,之后可以再右键分析,但是不建议这么做,为什么呢,这也是我们百思不得其解的地方,会偶尔莫明奇妙的闪退,如果是分析的代码量巨大就不要连续使用分析功能了,记住或者下断下一个分析起点,把OD重开,在运行分析,否则会因为内存不足大概率闪退,如果我们想将结果保存,可以在分析的日志界面,右键-》复制到粘贴板->整个表,这样子我们可以在记事本上慢慢的分析。


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 1天前 被阿强编辑 ,原因:
收藏
免费 130
支持
分享
最新回复 (129)
雪    币: 75
活跃值: (600)
能力值: ( LV2,RANK:19 )
在线值:
发帖
回帖
粉丝
2
看看你的思路
2025-11-14 16:43
1
雪    币: 15
活跃值: (203)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
试试
2025-11-15 09:29
0
雪    币: 23
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
感谢分享
2025-11-15 11:08
0
雪    币: 71
活跃值: (1903)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
666
2025-11-15 12:33
0
雪    币: 153
活跃值: (1148)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
6666
2025-11-15 18:30
0
雪    币: 226
活跃值: (410)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢分享。。
2025-11-15 20:35
0
雪    币: 226
活跃值: (410)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
大哥你是不是插件忘记放了。右键里没有这个。右键AntiVmp-》Auto Analyse
2025-11-15 21:00
0
雪    币: 5460
活跃值: (6833)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
9

我WIN10 X64 下右键里没有这个:右键AntiVmp-》Auto Analyse

最后于 2025-11-15 21:05 被china编辑 ,原因:
2025-11-15 21:04
0
雪    币: 226
活跃值: (410)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10

我WIN11系统 64  右键没有  AntiVmp-》Auto Analyse。看了下plugin文件夹里  AntiVmp插件在,但是在OD里,右键没有显示该插件

最后于 2025-11-15 21:11 被situhaonan编辑 ,原因:
2025-11-15 21:08
0
雪    币: 172
活跃值: (764)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
666
2025-11-15 21:17
0
雪    币: 2016
活跃值: (2650)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
china 我WIN10 X64 下右键里没有这个:右键AntiVmp-》Auto Analyse

这在代码界面才会出现的

2025-11-15 21:44
0
雪    币: 2162
活跃值: (7781)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
收藏学习
2025-11-15 22:12
0
雪    币: 2016
活跃值: (2650)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
14
situhaonan 我WIN11系统 64  右键没有  AntiVmp-》Auto Analyse。看了下pl ...
把所有压缩分卷都下好再解压,我这里重新下载到我的电脑上测试没问题,也有可能解压的时候被杀软当病毒查杀了
2025-11-16 08:01
0
雪    币: 226
活跃值: (410)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15

确认杀毒软件退出,没有杀掉任何插件。

依然没有

2025-11-16 09:18
0
雪    币: 2016
活跃值: (2650)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
situhaonan 确认杀毒软件退出,没有杀掉任何插件。依然没有

我电脑是win10系统,前面你说你电脑是win11,你发的图片怎么像是win7呀,实在不行找个装win10的电脑看看,还有不要在虚拟机运行。

2025-11-16 09:37
0
雪    币: 5460
活跃值: (6833)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
17
阿强 这在代码界面才会出现的

我这里确实没有

2025-11-16 09:51
0
雪    币: 1
活跃值: (3974)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
不错,学习。
2025-11-16 09:56
0
雪    币: 2016
活跃值: (2650)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
19

重新编译加壳了一次,去掉了虚拟机检测,如果还不能显示,那就束手无策了

上传的附件:
2025-11-16 10:38
0
雪    币: 190
活跃值: (281)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
不错,学习。
2025-11-16 10:40
0
雪    币: 2794
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
2025-11-16 10:48
0
雪    币: 2859
活跃值: (4281)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
不错,学习
2025-11-16 11:08
0
雪    币: 226
活跃值: (410)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23

我是W11的系统,只是把界面主题改成了WIN7的主题样式。


你加壳后,我重新下载后 放入OD的插件文件夹里,替换掉你原来的那个插件,还是没有显示。

2025-11-16 11:22
0
雪    币: 2016
活跃值: (2650)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
24
situhaonan 我是W11的系统,只是把界面主题改成了WIN7的主题样式。你加壳后,我重新下载后 放入OD的插件文件夹里,替换掉你原来的那个插件,还是没有显示。

话说,你电脑配置看着不咋地还装上了win11了,有种蚂蚁拉大车的感觉,刚刚在虚拟机上用win7试了一下,果然是缺少运行库,我猜可能是你在win11上没有提示缺少库吧,这里我直接编译的时候让库文件包含在dll里面了,这样子应该可以用了吧,实在不行就装个win7虚拟机。

上传的附件:
2025-11-16 14:26
2
雪    币: 1008
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
666
2025-11-16 14:29
0
游客
登录 | 注册 方可回帖
返回