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

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

2009-11-12 16:50
90186
收藏
点赞7
打赏
分享
最新回复 (146)
雪    币: 1137
活跃值: (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
dreamzgj 2 2009-11-12 16:52
2
0
站着沙发!!!学习....
雪    币: 383
活跃值: (41)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
小娃崽 13 2009-11-12 16:53
3
0
板凳,沒看到靜態還原的代碼
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
TSobo 2009-11-12 16:54
4
0
强大,学习
雪    币: 716
活跃值: (162)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
elance 6 2009-11-12 17:04
5
0
强大,学习PPT
雪    币: 337
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2009-11-12 17:07
6
0
膜拜下,不懂~
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
korall 2009-11-12 17:25
7
0
正在学习VM,谢谢楼主的分享
雪    币: 7651
活跃值: (493)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
achillis 15 2009-11-12 17:46
8
0
强帖留名~~
雪    币: 453
活跃值: (1193)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
StarsunYzL 2009-11-12 17:52
9
0
强大,VMP和TMD/WL越来越流行了,人人都去搞
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
escript 2009-11-12 18:02
10
0
概括性比较强,但不适合新人学习
雪    币: 262
活跃值: (16)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
lcjoo 3 2009-11-12 18:11
11
0
占领第一页学习
雪    币: 429
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
riusksk 41 2009-11-12 18:13
12
0
膜拜楼主大牛啊!!!!
雪    币: 709
活跃值: (2240)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
sudami 25 2009-11-12 18:19
13
0
654321
雪    币: 3682
活跃值: (931)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
daohaodaye 2009-11-12 18:34
14
0
谢谢楼主分享,下载学习
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
yingyue 2009-11-12 18:43
15
0
来看看爆了什么猛料。。。。。。。。。。。。。。。。。
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JBoy 2009-11-12 19:05
16
0
早就有耳闻bughoho大牛能完全还原.....
强悍。。。学习学习。。。
雪    币: 1379
活跃值: (708)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hmilywen 2009-11-12 19:11
17
0
终于看到bughoho帅哥了~
雪    币: 146
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Ivanlife 2009-11-12 19:16
18
0
Thx
NIUe
雪    币: 7300
活跃值: (3758)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
海风月影 22 2009-11-12 19:32
19
0
BUG hou yi hou
LMZ dou yi dou
雪    币: 326
活跃值: (88)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
aa1ss2 2 2009-11-12 19:44
20
0
多谢楼主,看了一下,发现有些东西和我理解的不一样,拿出来讨论一下。
我不知道教程里的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唯一一条跨虚拟机的指令,在多指令表的情况下,分析器也应该要切换指令表。
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JBoy 2009-11-12 20:06
21
0
同问。。。- -!``我也是分析到最后的实际操作eax的虚拟指令就傻了...
雪    币: 2071
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 4 2009-11-12 20:07
22
0
我认为VM里没所谓相对的寄存器观念
只有等到最后要离开时的 pop 才决定了我们熟知的寄存器观念.
无寄存器观念就无所谓的轮不轮随不随了.
若硬要将2者牵条红线, 过于免强.



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

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

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