面向二进制代码的多线程虚拟化保护技术*
2021-01-26王轶骏
通信技术 2021年1期
丁 宁,王轶骏,薛 质
(上海交通大学,上海 200240)
0 引言
随着计算机技术的不断累积与进步,逆向破解一款软件的成本变得越来越低。许多时候,逆向分析人员只需通过诸如IDA、OllyDbg 此类软件,便可以在极短的时间内,使用极小成本的情况下,完成对一款商业软件的破解。而遭受软件破解的商业公司可能就将面临开发成本无法回本,甚至更严重的经济损失。为了保护这些商业公司的软件著作权,技术人员们从技术角度提出了许多保护措施,其中最为广泛使用的是软件加壳保护技术。通过软件加壳,可以对原有的程序代码进行压缩、加密甚至虚拟化,从而达到抗反汇编、抗逆向的效果。本文所提出的代码虚拟化技术就属于这种保护技术中的一种。在逆向技术与软件保护技术的不断对抗中,代码虚拟化保护被证明是现今为止十分有效的一种抗逆向技术。
代码虚拟化技术采用虚拟机思想,将受保护程序中的程序逻辑转化为属于自己虚拟机的虚拟机指令,这样的代码虚拟化转化使得程序脱离了常规的寄存器和堆栈,从而使得逆向人员无法直接通过原先的知识积累进行逆向分析,若想分析此类受代码虚拟化保护的软件,需要对独特设计的虚拟机指令集、虚拟机堆栈进行分析,这样的保护有效地增加了逆向分析人员所需要付出的时间和经济成本。
近几年,研究人员提出了许多对于代码虚拟化保护方法的改进和加固方案。Wang 等[1]提出了NISLVMP方案,通过将虚拟机上下文复杂化的思想,实现了多组虚拟寄存器值的转换算法,获得最终虚拟机寄存器值来提高抗分析能力。……
登录APP查看全文
