首页
社区
课程
招聘
[讨论]VMP新防护架构--内联与级联模式
发表于: 2017-11-22 18:07 4201

[讨论]VMP新防护架构--内联与级联模式

2017-11-22 18:07
4201
手头上有个样本,日期是年初的,其采用的是vmp防护 ,目前vmp官方版本已经到了3.1.2。
查阅vmp 3.0的版本的更新历史,我们注意到一条,其简单低调地提及采用新VM架构“ New VM architecture ”。

History of changes

Version 3.0

[*] PE: Added support for exceptions in x64 code
[*] Mach-O: Added support for SDK functions
[*] Ultimate: Added support for licensing functions for drivers and applications written on VB6
[*] Ultimate: Functionality of DLL Box has been enhanced. Now the protected application can envelope any files including ActiveX servers with optional automatic registration in the virtual registry.
[*] Virtual Box detection has been improved
[*] Script engine changed to LUA
[*] New VM architecture
[+] A new function VMProtectIsProtected is added to the SDK


样本的架构是不是官方所提的新架构我这里得不到更好的印证,

且不管是否为官方所提,样例发现的VM架构与以前版本的架构有很大不同,

想必能引起新一轮逆向技术的跟进,盾与矛的衍化。


随着时间推移,各种传统的vm已经司空见惯,vm也触动不了逆向工程师们太多的波澜。

传统vmp的架构采用的是虚拟代码表的方式

如 

HHHso [原创]看雪 2016 CTF 第十八题 D-ASM-VM

 https://bbs.pediy.com/thread-214473.htm

所提, vmp的早期版本也是类似其所提的VM,

按问世先后和功能指令集的齐全方面,vmp都可以作为典型的老大。

这种VM架构典型的特征之一就是指令表,如HHHso 文章内容 所提

VMHandler = {
  0x00:["vm_reg_dtor_leave","4022CE"],#
  0x01:["vm_b_mov_R0_imm8","402101"],#
  0x02:["vm_b_mov_R1_imm8","40212D"],#
  0x03:["vm_b_mov_R2_imm8","40215A"],#
  0x04:["vm_b_mov_R0_R1","402187"],# }


对这种传统架构的VM,外功主要用混淆的清除、和虚拟指令表的逆向上;

得到虚拟指令表功能后,就可以直接反编译为最初级的vm指令代码;

内功主要庸才对初级vm指令代码到高级代码的进一步逆向优化转变。


可见,如果要全面彻底攻击这种vm的防护(这里我们定义全面彻底攻击为全面逆向的角度;诚然,实际攻击根据所达到的目标不同而可以选择不同攻击维度和深度,手段不一),首要任务是拿下虚拟指令表,也就基本可以开展后续逆向攻击了。这时传统vm架构的攻击。


想对比,vmp的新架构没有了上述所提的虚拟指令表,

虚拟指令代码全部内联,且虚拟指令代码之间级联相关(下一虚拟指令代码的地址由运行时计算得到,不再是索引虚拟代码表得到,而是直接硬编码在虚拟代指令流中)


虚拟代码内联

在传统vmp架构中,如 vm_b_mov_R0_imm8对应着唯一的虚拟指令实现代码片段( 起始地址402101 )

0x01:["vm_b_mov_R0_imm8","402101"],#

即同一功能虚拟指令总会执行同一实现代码片段(前提:在同一虚拟机内)


在vmp的新架构中,同一功能虚拟指令都对应着不同的实现代码片段;

这类似于代码内联(内联出现多少处,就有多少份同样的代码),只不过

vmp同一虚拟指令功能的不同处的代码片段只在功能上一样,在实现代码(混淆)上并不完全一样。


正因如此,新架构vm过后,防护样例大小膨胀率比较可观,几百K的可以达到十几到几十M的体积。

对于这种没有存放虚拟指令表的vm新架构,虚拟指令的功能定性都无法像传统方式那样一劳永逸,

这将促进新一轮半自动或全自动逆向分析技术的跟进,引领更高层次的逆向技术发展。



























[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 576
活跃值: (1163)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
外功变了,不知道内功有没有变
2017-11-22 19:44
0
雪    币: 107
活跃值: (182)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
最近也在研究vmp3,但网上并没有找到成型的工具。正在尝试自己搞,目前遇到的问题是,handle的特征和vmp2对比变化很大,需要一一收集。这是一个体力活。。
2017-11-23 10:46
0
游客
登录 | 注册 方可回帖
返回