本书主要分成3个部分讨论代码虚拟和自动化分析技术。第1部分主要讨论代码虚拟化技术的各种实现方法,并通过一些现有的代码虚拟化技术应用案例引领读者了解代码虚拟化的技术基础。第2部分主要介绍和讨论代码自动化分析技术,也就是对在第1部分中介绍的代码虚拟化技术进行讨论,利用虚拟化技术自身进行自动化分析,通过实际的代码将自动化分析技术从理论变为实际的程序,提升读者对自动化分析技术的理解和运用水平。第3部分使用自动化分析技术全面分析Winlicense和VMProtect保护系统,展示自动化分析技术,并通过实际的分析过程带领读者深入体会代码虚拟化技术。
本书适合信息安全领域相关人员、高校相关专业学生及爱好者阅读。
打开代码虚拟化技术的“黑箱”,全面解析自动化分析技术,让你的软件更强健
前 言
在完成了《软件保护及分析技术——原理与实践》一书以后,回顾该书的内容,发现基于该书的定位和目标,无法涉及更多软件安全领域的高阶技术,因此有了本书。
在现代软件安全技术中,代码加密技术,尤其是代码虚拟加密技术,已经成为最为主要的,同时也是最为有效的软件保护手段之一。尽管代码虚拟化技术不断成熟,但目前没有足够的相关文档和信息被公开,这使代码虚拟化技术成为一种封闭的“黑箱技术”,只有少部分人才能了解并运用它。
写作目的
虚拟化技术在现代计算机技术中占据着越来越重要的位置。在现代计算机系统中,从硬件到软件,从上层应用到系统底层,都需要虚拟化技术。
什么是虚拟化?虚拟化是一个泛指,在计算机中是指将某种逻辑行为发生的环境进行更换,使这种逻辑行为在不同环境中的发生和运行都能得到相同的逻辑结果的技术。传统的计算机虚拟化技术都是为了使程序在更加安全、稳定的环境中更加快捷、方便地完成特定的逻辑处理或者程序功能而设计的,但在计算机技术飞速发展的今天,很多事物都发生了质的变化,在虚拟化技术中同样如此。于是,在现代的虚拟化技术中出现了一个重要的分支——代码虚拟化。
从广义上说,代码虚拟的目的也是使软件的逻辑行为运行在一个更加安全的环境中,但与其他虚拟化技术不同的是,代码虚拟化的安全目标是针对人而非计算机环境的,也就是说,代码虚拟机的实质并不是从技术上使程序的实际代码运行更加稳定或者更加安全,而是使代码的运行过程更为复杂,从而使他人难以理解代码自身的逻辑行为,防止代码运行流程被篡改或逆向。代码虚拟化技术的这种特征,使其超出了一般的技术范畴,成为一种在人与人之间借助软件安全进行博弈游戏的载体。
彻底理解代码虚拟化技术要从虚拟化和反虚拟化两个方面进行。在现代的代码虚拟化技术中,传统的反虚拟化技术的发展远远落后于虚拟化技术,而且遇到了难以跨越的障碍。这是因为随着计算机运算速度的加快,虚拟化技术可以使用大量的计算机运算来实现代码的虚拟化,大大膨胀和扩张虚拟化代码量,使代码的运行量达到一种难以人为进行分析的地步,从而使人工分析代码的逻辑和行为变得不切实际。
针对这种情况,自动化分析技术应运而生。既然代码虚拟可以利用计算机强大的运算能力,那么自动化分析技术也可以运用计算机的运算能力来帮助我们更加方便地理解这些代码。更富戏剧性的是,在自动化分析方面,我们使用较多也较为有效的技术恰恰是代码虚拟化技术,这就形成了利用虚拟化技术理解分析虚拟化技术的奇妙关系。在本书中,笔者将与读者一起感受这个代码中的虚拟世界。
本书内容
本书主要分成3部分来讨论代码虚拟和自动化分析技术。第1部分主要讨论代码虚拟的各种实现方法,并通过一些代码虚拟化技术的应用案例引领读者了解代码虚拟化的技术基础。第2部分主要介绍和讨论代码自动化分析技术,也就是针对我们了解的各种代码虚拟化技术,对如何对其进行理解和利用进行自动化分析,并通过实际的代码将自动化分析技术从理论变为实际程序,提升我们对自动化分析技术的理解和运用水平。第3部分使用自动化分析技术分析Winlicense与VMProtect保护系统,全面展示自动化分析技术,并通过这种实际的分析过程深入体会代码虚拟化技术。
章立春
2017年2月
代码啊代码
写的书都是不全的代码。。
这作者很奇葩,写了两本书,随书源码全部只给一部分,如果不想公布技术就不要写书好了,写了又藏着掖着,感觉写书就为了出名和炫耀,想讲出来,又怕人学去
能不能让作者提供完整代码啊,能联系到作者吗
这作者很奇葩,写了两本书,随书源码全部只给一部分,如果不想公布技术就不要写书好了,写了又藏着掖着,感觉写书就为了出名和炫耀,想讲出来,又怕人学去
书的内容不错,只是随书代码没有给全,想要跟着书本的例子实现一遍项目得自己更换很多文件,希望作者能把代码给全,比如 第2章中的simulateVM.cpp中的“#include “Q:/Projects/nSafeSuite/ncvm/nxfmt/nxfmt86.h””,代码中根本没有找到ncvm相关的文件。