首页
社区
课程
招聘
[原创]vmp3.0.9全保护拆分解析
发表于: 2018-5-1 14:31 53455

[原创]vmp3.0.9全保护拆分解析

2018-5-1 14:31
53455
收藏
免费 7
支持
分享
最新回复 (42)
雪    币: 627
活跃值: (663)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
26
cat喵 谢谢,说的好详细。想问下vCALL在3.x版本下不止一个,但是一直没明白为啥这个检测基本上检测函数的调用在一个地方就能过,我是把所有的保护都有勾选的?
你这个样本是有点特殊:
API调用总是在这个vCall上;通常不应该“固定”在某个vCall上。

我在“一个反调试有特色的CrackMe”里提到看过的两个VMP3的样本v301和v309,外壳部分(vmp1)都各有11个vCall,按入口地址依次标记为vCall1~vCallB。
从壳的入口到第一个vGetHash(v301是一个GetHash函数)之间,所有vCall的记录都为12次,但不是总在同一个vCall上:
v301样本
 1)     vCall6  kernel32.LocalAlloc                     ; size 0xA4; for anti data!
 2)     vCallA  kernel32.GetCurrentProcess
 3)     vCall5  kernel32.IsDebuggerPresent
 4)     vCallB  kernel32.CheckRemoteDebuggerPresent
 5)     vCall2  ntdll.ZwQueryInformationProcess         ; ProcessDebugPort
 6)     vCall8  kernel32.GetCurrentThread
 7)     vCallB  ntdll.ZwSetInformationThread
 8)     vCall4  ntdll.ZwQuerySystemInformation          ; SystemDebuggerInfo
 9)     vCall5  ntdll.ZwQuerySystemInformation          ; SystemModuleInfo, get buffer size
10)     vCall8  kernel32.LocalAlloc                     ; alloc buf
11)     vCall4  ntdll.ZwQuerySystemInformation          ; SystemModuleInfo, query
12)     vCall2  kernel32.LocalFree                      ; free buf
v309样本
 1)     vCall1  kernel32.LocalAlloc                     ; size 0xA4; for anti data!
 2)     vCall3  kernel32.GetCurrentProcess
 3)     vCall4  kernel32.IsDebuggerPresent
 4)     vCall7  kernel32.CheckRemoteDebuggerPresent
 5)     vCall4  ntdll.ZwQueryInformationProcess         ; ProcessDebugPort
 6)     vCall4  kernel32.GetCurrentThread
 7)     vCall7  ntdll.ZwSetInformationThread
 8)     vCall8  ntdll.ZwQuerySystemInformation          ; SystemDebuggerInfo
 9)     vCall7  ntdll.ZwQuerySystemInformation          ; SystemModuleInfo, get buffer size
10)     vCall1  kernel32.LocalAlloc                     ; alloc buf
11)     vCall6  ntdll.ZwQuerySystemInformation          ; SystemModuleInfo, query
12)     vCallA  kernel32.LocalFree                      ; free buf

这两个样本在vmp0段解密后,它的vCall都各多达110个!即壳代码部分VM的handler数要远远少于用户代码保护部分VM的handler。
我对VMP3研究得还不多,也许您可以把样本放上来大家看看。
2018-5-14 09:56
0
雪    币: 175
活跃值: (2526)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
强,收藏学习了。
2018-5-18 14:24
0
雪    币: 56
活跃值: (242)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
收藏学习了。
2018-5-19 11:59
0
雪    币: 2694
活跃值: (80)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
29
2018-5-30 07:46
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
厉害了,收下谢谢分享
2018-6-1 19:16
0
雪    币: 9142
活跃值: (1630)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
31
好,正需要,学习中,谢谢分享
2018-6-13 16:45
0
雪    币: 224
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
谢谢楼主分享。
2018-6-14 15:16
0
雪    币: 6
活跃值: (1141)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
MistHill Call R32 在vCall里。 VMP3的vCall与VMP2有很大不同,VMP2的vCall只能调用虚拟子程序/函数,VMP3的vCall可以直接调用API,比较方便。感觉VMP3的vCall ...
感谢mist
2018-7-17 15:21
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
新版本3.2改进了反调试 
2018-7-29 20:33
0
雪    币: 9142
活跃值: (1630)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
35
很详细,谢谢
2018-8-3 21:26
0
雪    币: 1620
活跃值: (17)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
36
感觉挺适合新手的,讲的比较浅显易懂,谢谢
2018-8-12 23:13
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
蹲个未来大佬
2018-11-16 20:10
0
雪    币: 2391
活跃值: (309)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
38
mark
2018-12-6 00:12
0
雪    币: 183
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
不错,学习一下
2018-12-6 08:47
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
之前debug的程序都没有anti-debugger,刺客信条枭雄上了vmp,学习一下
2019-2-9 03:36
0
雪    币: 302
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
收藏学习了 谢谢分享
2019-5-29 17:13
0
雪    币: 1737
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
感谢分享学习经验
2020-9-14 20:10
0
雪    币: 224
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
谢谢分享~~
2020-10-4 19:43
0
游客
登录 | 注册 方可回帖
返回
//