代码虚拟与自动化分析
章立春 编著
作者简介
章立春,看雪ID netsowell,多年来一直从事软件和网络安全问题研究,擅长软件逆向分析、系统级编程、虚拟化技术、各类安全工具的开发等。 前言
在完成了《软件保护及分析技术——原理与实践》一书以后,回顾该书的内容,发现基于该书的定位和目标,无法涉及更多软件安全领域的高阶技术,因此有了本书。
在现代软件安全技术中,代码加密技术,尤其是代码虚拟加密技术,已经成为最为主要的,同时也是最为有效的软件保护手段之一。尽管代码虚拟化技术不断成熟,但目前没有足够的相关文档和信息被公开,这使代码虚拟化技术成为一种封闭的“黑箱技术”,只有少部分人才能了解并运用它。
写作目的
虚拟化技术在现代计算机技术中占据着越来越重要的位置。在现代计算机系统中,从硬件到软件,从上层应用到系统底层,都需要虚拟化技术。
什么是虚拟化?虚拟化是一个泛指,在计算机中是指将某种逻辑行为发生的环境进行更换,使这种逻辑行为在不同环境中的发生和运行都能得到相同的逻辑结果的技术。传统的计算机虚拟化技术都是为了使程序在更加安全、稳定的环境中更加快捷、方便地完成特定的逻辑处理或者程序功能而设计的,但在计算机技术飞速发展的今天,很多事物都发生了质的变化,在虚拟化技术中同样如此。于是,在现代的虚拟化技术中出现了一个重要的分支——代码虚拟化。
从广义上说,代码虚拟的目的也是使软件的逻辑行为运行在一个更加安全的环境中,但与其他虚拟化技术不同的是,代码虚拟化的安全目标是针对人而非计算机环境的,也就是说,代码虚拟机的实质并不是从技术上使程序的实际代码运行更加稳定或者更加安全,而是使代码的运行过程更为复杂,从而使他人难以理解代码自身的逻辑行为,防止代码运行流程被篡改或逆向。代码虚拟化技术的这种特征,使其超出了一般的技术范畴,成为一种在人与人之间借助软件安全进行博弈游戏的载体。
彻底理解代码虚拟化技术要从虚拟化和反虚拟化两个方…