首页
社区
课程
招聘
[原创]VMProtect的逆向分析和静态还原(2009中国软件安全峰会演讲PPT)
发表于: 2009-11-12 16:50 90936

[原创]VMProtect的逆向分析和静态还原(2009中国软件安全峰会演讲PPT)

2009-11-12 16:50
90936
收藏
免费 7
支持
分享
最新回复 (146)
雪    币: 1137
活跃值: (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
站着沙发!!!学习....
2009-11-12 16:52
0
雪    币: 383
活跃值: (41)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
3
板凳,沒看到靜態還原的代碼
2009-11-12 16:53
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
强大,学习
2009-11-12 16:54
0
雪    币: 716
活跃值: (162)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
5
强大,学习PPT
2009-11-12 17:04
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
6
膜拜下,不懂~
2009-11-12 17:07
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
正在学习VM,谢谢楼主的分享
2009-11-12 17:25
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
8
强帖留名~~
2009-11-12 17:46
0
雪    币: 424
活跃值: (1849)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
强大,VMP和TMD/WL越来越流行了,人人都去搞
2009-11-12 17:52
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
概括性比较强,但不适合新人学习
2009-11-12 18:02
0
雪    币: 262
活跃值: (36)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
11
占领第一页学习
2009-11-12 18:11
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
12
膜拜楼主大牛啊!!!!
2009-11-12 18:13
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
13
654321
2009-11-12 18:19
0
雪    币: 999
活跃值: (1186)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
谢谢楼主分享,下载学习
2009-11-12 18:34
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
来看看爆了什么猛料。。。。。。。。。。。。。。。。。
2009-11-12 18:43
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
早就有耳闻bughoho大牛能完全还原.....
强悍。。。学习学习。。。
2009-11-12 19:05
0
雪    币: 1481
活跃值: (874)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
终于看到bughoho帅哥了~
2009-11-12 19:11
0
雪    币: 146
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
Thx
NIUe
2009-11-12 19:16
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
19
BUG hou yi hou
LMZ dou yi dou
2009-11-12 19:32
0
雪    币: 326
活跃值: (88)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
20
多谢楼主,看了一下,发现有些东西和我理解的不一样,拿出来讨论一下。
我不知道教程里的VMP是什么版本,我这里的是1.8

首先是我认为VMP里面的寄存器不是轮转,而是随机。
在一些状态下,追踪寄存器是很困难的。

我用一条MOV EAX,11111111指令来测试VMP,我观察到的数据如下

初始状态 EAX=0,出口时EAX=11111111

9               VMP_MOVIN_REG REG_28    (0x0)                               

VMP保存现场时把EAX放到了REG_28

因为REG_28保存着EAX,因此REG_28不能使用

229             VMP_AND_DWORD  0xFF1BDBF9 , 0x11111111  (0x11111111     eflags=0x00000206)
230             VMP_MOVIN_REG REG_30    (0x00000206)
231             VMP_MOVIN_REG REG_30    (0x11111111)

解密后EAX变成了REG_30,在VMP的编译阶段,原来的EAX已经丢弃了。

根据楼主的教程,就算已经识别了指令,那么现在的EAX是多少呢??

262             VMP_SHR_BYTE  0x44 , 0x44  (0x4     eflags=0x00000212)
263             VMP_MOVIN_REG REG_28    (0x00000212)

好了,到了263时,原来的EAX被用来做花了。

624             VMP_MOVOUT_REG REG_30    (0x11111111)

出口,恢复EAX

这里的REG_30和REG_28根本不存在映射的关系,我认为REG_30是完全随机的。
这是因为MOV指令很特别,这条指令更新了寄存器的状态,使其与以前的状态没有任何关系。

另外,18页那里写静态分析VMP_JMP,这里的跳转地址应该要事先追踪出来吧。跳过指令分析的话,这里好像也会出问题,据我观察,这条指令是VMP唯一一条跨虚拟机的指令,在多指令表的情况下,分析器也应该要切换指令表。
2009-11-12 19:44
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
同问。。。- -!``我也是分析到最后的实际操作eax的虚拟指令就傻了...
2009-11-12 20:06
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
22
我认为VM里没所谓相对的寄存器观念
只有等到最后要离开时的 pop 才决定了我们熟知的寄存器观念.
无寄存器观念就无所谓的轮不轮随不随了.
若硬要将2者牵条红线, 过于免强.



那里讲的是虚拟执行.
2009-11-12 20:07
0
雪    币: 326
活跃值: (88)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
23
虚拟机模拟的是真实的CPU,CPU的寄存器状态必定会出现在虚拟机的内存中,在一般的情况下,可以通过追踪CPU的寄存器来识别指令,不能识别寄存器的状态是很难区分真实的指令和垃圾指令的。

关于第二点,我知道是虚拟执行。在17页,楼主教程里说操作数的值不可靠,这应该是说这个并不是完全的虚拟执行。

就像 JMP ??????? 这样的指令,光知道是JMP并没有用,不知道跳转的地址就没有办法进行历遍。而且VMP的JMP指令在修改了esi后,有可能切换指令表和解密算法,这时如果没有自动的指令识别就会很麻烦。
2009-11-12 20:53
0
雪    币: 12654
活跃值: (4248)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
24
谢谢分享~~下来学习下
2009-11-12 21:00
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
劲爆123456
2009-11-12 21:06
0
游客
登录 | 注册 方可回帖
返回
//