首页
社区
课程
招聘
[原创]深入解析VMP3.x_VM-Jcc指令爆破
发表于: 2018-9-27 23:59 12222

[原创]深入解析VMP3.x_VM-Jcc指令爆破

2018-9-27 23:59
12222


我们通过一个被VMP3.x_VM保护的CracKme来探索下Vmp3.x_VM的内部,进行深入了解VM指令

(文中有很多VM爆破点)本文只通过修改JCC指令来达到在VM中爆破的目的,在进行本文之前,我们需要简单了解一下JCC指令。

JCC指令它有两个分支,它是通过判断eflag来进行选择走向哪一个分支,同时虚拟机化的(VM)JCC指令最终的走向也是在选择分支。

样本是一个很简单的一句if语句的E语言编写的CrackMe,同时关键代码被VMP3.2.0保护,

Compilation Type为 Ultra(Mutation+Virtualization)

反汇编窗口十六进制搜索 FF55FC5F5E , CC断点位于00418BDD ,运行程序随便输入pass中断。




标准的VM入口

借助xx_vm插件进行分析,(初始化日志,进行分析)看看有没有我们需要的一些信息

停留在这里,


单步F8跟踪,执行到函数尾部。


这个函数应该是在获取我们已经输入的内容,并在累加寄存器 EAX返回

继续单步F8,再次来到一个VM入口,使用插件继续分析。

........................

一段vm代码后,我们到达了一个熟悉的地方,但是比前面相同的地方多了一些有意思的信息,


[sp+4] 是我们当前输入的数值

[sp+8] 看起来貌似是个正确的密码

单步跟踪一下,发现这里是一个字符串比较函数

字符串比较函数到达函数尾部,发现EAX寄存器的值返回FFFFFFFF,考虑到Strcmp的返回值,我们可以把这里暂定为Strcmp函数

走出这个函数,又来到一个VM入口


这里应该是对 Strcmp的返回值进行判断,同时这里的分析成为了我们的重点。

另外根据前面的分析,Strcmp走了两次,获取输入的值的函数也走了两次,我们在这里猜测,第一次是判断输入的数值是否为空,第二次才是真正的判断密码是否正确。(尝试了不输入密码,发现我们的猜测正确)

重新初始化插件日志,这里开始分析。

堆栈窗口,出现了判断我们输入的值是否合法的信息

这里执行到函数尾部,出现了对话框,判断的整个流程执行完毕。

打开我们的日志信息,(Strcmp之后的分析日志内容),Strcmp返回的值是FFFFFFFF,日志文本内搜索FFFFFFFF,发现在Entry之后的第11个pop中找到了这个值。

这里EAX的值被映射到 index=00000004的寄存器中,这些日志文件指令是不是看起来有种茫然的感觉?我们先进行一个基础的概念了解---VM伪代码和真实汇编代码它们不是一一对应的关系,实际上一组伪代码对应一条真实汇编代码。了解了基础概念,我们可以将VM伪代码划分为代码块,划分原则(虚拟栈平衡(PUSH,POP除外)),根据划分原则,我们对日志文件的VM伪代码来进行划分代码块

代码块1


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2018-9-28 00:03 被xxdisasm编辑 ,原因:
上传的附件:
收藏
免费 2
支持
分享
最新回复 (23)
雪    币: 6270
活跃值: (3335)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
6
2018-9-28 00:03
0
雪    币: 222
活跃值: (185)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
3
厉害
2018-9-28 00:23
0
雪    币: 3
活跃值: (1864)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
如果是强制爆破  就是下面这样了

ESP+30 的值爆破点  1C为真码


00532CC3  ^\E9 5E4CF9FF     jmp     004C7926

会调用两次 判断 一次修改将进入异常模式
最后于 2018-9-28 02:14 被chenjialei编辑 ,原因:
2018-9-28 01:59
0
雪    币: 47147
活跃值: (20460)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
2018-9-28 07:01
0
雪    币: 42
活跃值: (5259)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
wsc
6
2018-9-28 10:27
0
雪    币: 133
活跃值: (233)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
2018-9-28 21:04
0
雪    币: 1
活跃值: (124)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这个必须赞!看雪真实人才辈出!
2018-9-28 21:05
0
雪    币: 1
活跃值: (124)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
天下英雄出我辈,
2018-9-28 21:05
0
雪    币: 1907
活跃值: (6004)
能力值: ( LV7,RANK:116 )
在线值:
发帖
回帖
粉丝
10
孩子的眼中是这样的,在推销xx_vm插件。童颜无忌,见谅了。
2018-9-29 00:16
0
雪    币: 175
活跃值: (2531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
确实是高手。
2018-10-1 17:25
0
雪    币: 198
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
2018-10-2 18:07
0
雪    币: 9198
活跃值: (1635)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
13
看雪尽是好文章…
2018-10-2 18:30
0
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
主要还是推销xx_vm插件
2018-10-3 00:21
0
雪    币: 452
活跃值: (6128)
能力值: ( LV12,RANK:580 )
在线值:
发帖
回帖
粉丝
15
你确定你是原创?hhh心里有数吧 
2018-10-3 08:25
0
雪    币: 452
活跃值: (6128)
能力值: ( LV12,RANK:580 )
在线值:
发帖
回帖
粉丝
16
这吾爱搬来的吧 原创是sound PDF转word直接复制来的吧
2018-10-3 08:27
0
雪    币: 20
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
关键是卖插件的
2018-10-4 12:53
0
雪    币: 222
活跃值: (739)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
18
CatGames 这吾爱搬来的吧 原创是sound PDF转word直接复制来的吧
帖子是原创的,是本人和sound共同制作和修改的,
2018-12-14 12:37
0
雪    币: 6976
活跃值: (1482)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
19
浅显易懂。 多写一些容易上手, 又容易产生效果的文章!!!
2018-12-14 13:45
0
雪    币: 222
活跃值: (739)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
20
JoenChen 浅显易懂。 多写一些容易上手, 又容易产生效果的文章!!!
好的
最后于 2018-12-14 17:39 被xxdisasm编辑 ,原因:
2018-12-14 17:06
0
雪    币: 62
活跃值: (971)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
21
实际效果是:把vm的一些混淆跳转之类虚拟机进出调度过程给忽略了,只保留了vm handler 的代码?
然后要自己一一区分哪些虚拟机里的handler指令对应了一个原始指令?
这样的话,还差一层将这些handler代码块转成一条指令的功能。
不然还是很难看。。。
最后于 2018-12-14 17:43 被wonderzdh编辑 ,原因:
2018-12-14 17:31
0
雪    币: 222
活跃值: (739)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
22
wonderzdh 实际效果是:把vm的一些混淆跳转之类虚拟机进出调度过程给忽略了,只保留了vm handler 的代码?然后要自己一一区分哪些虚拟机里的handler指令对应了一个原 ...
现在的版本还是需要人工还原到原始指令的,只看数据的话,还是比较清晰的。还原化简的功能,开发中
2018-12-14 17:43
1
雪    币: 31
活跃值: (87)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
23
MARK
2018-12-25 19:30
1
雪    币: 13
活跃值: (402)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
chenjialei 如果是强制爆破  就是下面这样了ESP+30 的值爆破点  1C为真码00532CC3  ^\E9 5E4CF9FF  & ...
可以出个教程吗
2019-8-5 18:30
0
游客
登录 | 注册 方可回帖
返回
//