欢迎光临散文网 会员登陆 & 注册

看雪VMProtect分析与还原

2023-05-23 12:57 作者:bili_73767213996  | 我要投稿

VMProtect虚拟机保护软件是业界公认的高强度软件保护工具。VMP除了具有常规的IAT保护、资源保护、反调试、完整性校验、运行时壳等保护手段以为,其最为人痛恨的是虚拟化保护。通过将原始的二进制汇编代码转化成语义等价的虚拟机字节码(也常称为PCODE,伪代码),并使用自定义虚拟机(或称字节码解释器)对字节码进行解释执行。想恢复原始的代码,必须分析虚拟机本身,大大提高了逆向分析的难度。

据笔者目前查到的资料,尚无公开的工具或方法可以进行VMP虚拟机字节码到原始二进制代码的还原。

个人觉得主要原因在于VMP虚拟机的RISC栈机体系结构与x86的CISC体系结构差异巨大。

如x86的一条指令如mov eax, [ebp+0x100],转化为VMP伪代码会变成类似如下的代码:

push ebppush 0x100addpop eflpop tmppush tmppop eax

(实际上ebp, efl, tmp, eax都会对应VMP的虚拟寄存器,这里为了方便表达暂时这么写)

一条CISC指令转化成RISC栈机指令时会发生巨大的指令膨胀。想将膨胀后的伪代码还原为一条CISC汇编指令是很困难的。

1. 如果单纯依靠模式规则的匹配,这么必须收集非常多的膨胀规则,需要付出巨大的人力代价,开发难度高,却不一定有好的效果。

2. 由于VMP的寄存器轮转问题,确定指令的真实寄存器是很困难的。(2009年中国软件安全峰值 Bughoho的PPT 《VMProtect的逆向分析与静态还原》中详细描述了寄存器轮转并提出了解决方案,但这种方案比较复杂,开发难度比较高。)


看雪VMProtect分析与还原的评论 (共 条)

分享到微博请遵守国家法律