基于虚拟机的软件保护技术

导读 基于虚拟机的软件保护技术不确定是否首先由vmprotect提出,但vmprotect毫无疑问是将这项技术大力推广至人所周知。现在基于虚拟机的软件保护技术已经成为现代软件安全防护的必备功能之一。

现有软件保护技术概述


混淆是指通过加入无意义代码(又称为花指令或垃圾代码)或者有意义代码,增加反汇编码的理解难度。俗话说要藏好一棵树,最好的地点一定是森林,混淆技术就是通过代码膨胀增加反汇编代码的总量,为隐藏核心代码构造出一片代码“森林”。早期增加的混淆代码为无意义代码,实现类nop操作的执行效果,如push指令和pop指令搭配使用,但这类代码无实际意义,去除后并不会对软件运行产生影响,因此有经验的逆向工程师往往会首先去除这些无意义的混淆代码才开始进行反汇编码的阅读工作,使混淆技术失去效果。为了确保混淆代码不被去除,工业级的保护产品更倾向于采用有意义的混淆代码,核心思想是等价替换,通过多条指令实现核心代码中一条指令的效果,如最简单的赋值指令moveax,3可以替换成xoreax,eax;inceax;inceax;inceax这四条指令,操作效果一样,但指令数量翻了两番。被动型软件保护技术究竟能否对软件安全起到实质性的作用,业界一直存在争论。反对的观点主要集中在认为被动型软件保护技术只是提高了阅读反汇编代码的难度和数量,让人“眼花”而已,并没有任何实质性的效果。本文认为,软件安全不该简单理解成让软件绝对安全不可攻破,而实际该是攻方与防方、投入与产出的反复博弈的过程,攻方人力的投入自然也是成本之一。一个人单位时间内阅读代码的数量是固定的,因此,提高了阅读反汇编代码的难度和数量,也就提高了阅读反汇编代码的时间,提高了攻方人力成本的投入,对软件安全是有切实效果的。

虚拟机软件保护技术 虚拟机软件保护的思想

虚拟机软件保护的实现

本文转载自:http://www.linuxprobe.com/software-protection-virtual.html

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24890 人正在系统学习中

来源:Jack__CJ

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年8月21日
下一篇 2016年8月21日

相关推荐