首页
社区
课程
招聘
[原创]谈谈vmp的还原(1)
发表于: 2018-3-19 12:51 16504

[原创]谈谈vmp的还原(1)

2018-3-19 12:51
16504

首先文章不同于其他的文章,从vmp是如何vm opcode入手,看完以后不说还原,相信爆破,静态分析也应该有所帮助。

主要是vmp3.x以下。


0x01 简介vmp的流程

大体如下:


直接定位到流程:




首先读了vmp_opcode_begin_block end_block

然后计算_vm_opcode_size

没错,之前的帖子有提到,vmp作者设计了4套handle,就是这4套了。


注意到上上图113行之后,同时我们也可以看出早期版本的构造


下面这个,之前也有提到



注意到+8,之后会说

先允许我跳过esi的构造以及修复,继续讲下去



可以看到vmp通过这样方式实现jmp vm_entry,所以有些vm插件会通过这种方式来定位到入口

68 xx xx xx xx e9 xx xx xx xx

之后,创建区段vmp0


set jmp_entry



之后写之前的push esi jmp vm_entry了


然后写完之后写vmp1区段,流程大概就这个样子,当然我跳过了构造esi以及对esi的修正

0x10 反汇编引擎

之所以会先谈谈这个,因为如果不看懂这个,后面的vm流程肯定看不懂

为了逆出这个反汇编引擎,我看了几遍opcode的构造方式以及一份开源的反汇编引擎(libudis86)。不过正因为如此,我才大概猜测出来一部分,vmp作者是如何构造这套vm的。



这个函数大概3000+行

这下面通过这两条指令来看看是怎么反汇编的,当然需要一些基础知识。

注意到*(a2-10)其实是对应的这个东西


再上个图就明白为什么是 (xx & 2 ) == 2了



然后读modrm 0x7D进行查找mnemonic


对应的mnemonic




[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-2-1 19:22 被admin编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (20)
雪    币: 153
活跃值: (723)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持  大牛
2018-3-19 13:57
0
雪    币: 52
活跃值: (1379)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
大牛好厉害
2018-3-19 14:56
0
雪    币: 118
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
感谢分享知识!
2018-3-19 15:19
0
雪    币: 2348
活跃值: (127)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
支持,期待后续大作,谢谢分享~
2018-3-19 15:25
0
雪    币: 14872
活跃值: (6093)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
还原有一定难度,因为一条汇编语言被分解成n条VMP指令。
这就好比c  to  asm容易,asm  to  c较难。
2018-3-19 15:27
0
雪    币: 650
活跃值: (4217)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
感谢分享  mark 
2018-3-19 16:18
0
雪    币: 375
活跃值: (201)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
感谢大牛分享
2018-3-20 10:10
0
雪    币: 3190
活跃值: (1816)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
+1
2018-3-20 10:16
0
雪    币: 4
活跃值: (346)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
IDA分析的是什么文件?VMP的主程序?
2018-3-20 10:25
0
雪    币: 2347
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
mark一波
2018-3-20 10:52
0
雪    币: 41
活跃值: (823)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
写得好细致
2018-3-20 11:35
0
雪    币: 59
活跃值: (1511)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
楼主可否分享下分析的主程序?
2018-3-20 12:06
0
雪    币: 8107
活跃值: (1955)
能力值: ( LV8,RANK:122 )
在线值:
发帖
回帖
粉丝
14
感谢分享,  大牛,  这分析的是什么程序呀
2018-3-20 14:43
0
雪    币: 5
活跃值: (33)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
感谢大牛分享
2018-3-20 16:59
0
雪    币: 2173
活跃值: (3231)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
16
为什么不发到加壳脱壳区呢?
2018-3-24 18:15
0
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
17
干货~~mark
2018-3-24 18:27
0
雪    币: 911
活跃值: (1358)
能力值: ( LV12,RANK:280 )
在线值:
发帖
回帖
粉丝
18
xiaohang 为什么不发到加壳脱壳区呢?[em_2]
哈哈,以后有机会的
2018-3-25 19:29
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
老司机,方便把bin和idb分享吗?
2018-3-27 17:39
0
雪    币: 37
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
20
这是指vmp脱壳吗,vmprotect ultimate加密的dll能脱壳吗
2020-8-21 12:45
0
雪    币: 409
活跃值: (982)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
21
早晚得要啃这一课,先战略MARK
2020-9-18 13:15
0
游客
登录 | 注册 方可回帖
返回
//