新書推薦:
《
地下(村上春树沙林毒气事件的长篇纪实)
》
售價:HK$
76.7
《
偿还:债务与财富的阴暗面
》
售價:HK$
80.2
《
清华大学藏战国竹简校释(壹):《命训》诸篇
》
售價:HK$
94.4
《
封建社会农民战争问题导论(光启文库)
》
售價:HK$
68.4
《
虚弱的反攻:开禧北伐
》
售價:HK$
92.0
《
中华内丹学典籍丛书:古书隐楼藏书汇校(上下)
》
售價:HK$
257.2
《
辞源.修订本(建国60周年纪念版)(全二册)
》
售價:HK$
1477.6
《
泰山:一种中国信仰专论(法国汉学经典译丛)
》
售價:HK$
81.4
|
編輯推薦: |
探究软件保护领域的黑箱代码虚拟化技术,运用自动化分析技术理解代码,畅游代码中的虚拟世界。
|
內容簡介: |
本书主要分成3个部分讨论代码虚拟和自动化分析技术。第1部分主要讨论代码虚拟化技术的各种实现方法,并通过一些现有的代码虚拟化技术应用案例引领读者了解代码虚拟化的技术基础。第2部分主要介绍和讨论代码自动化分析技术,也就是对在第1部分中介绍的代码虚拟化技术进行讨论,利用虚拟化技术自身进行自动化分析,通过实际的代码将自动化分析技术从理论变为实际的程序,提升读者对自动化分析技术的理解和运用水平。第3部分使用自动化分析技术全面分析Winlicense和VMProtect保护系统,展示自动化分析技术,并通过实际的分析过程带领读者深入体会代码虚拟化技术。本书适合信息安全领域相关人员、高校相关专业学生及爱好者阅读。
|
關於作者: |
章立春,看雪ID netsowell,多年来一直从事软件和网络安全相关问题研究,擅长软件逆向分析、系统级编程、虚拟化技术及各类工具的开发等。
|
目錄:
|
目录
第1部分实现原理
第1章代码虚拟化原理2
1.1代码虚拟机运行时框架3
1.1.1流程控制指令6
1.1.2入口代码6
1.1.3解码执行器7
1.1.4出口代码8
1.2代码虚拟机非运行时部件8
1.2.1译码器9
1.2.2虚拟化媒介编码器10
1.2.3运行时部件10
1.2.4运行时部件生成器10
1.2.5原始程序处理器11
1.3本章小结11
第2章模拟虚拟化12
2.1Bochs简单分析12
2.1.1模拟CPU对象13
2.1.2译码器15
2.1.3解码执行器16
2.1.4OP代码分支17
2.2模拟虚拟化特征19
2.3实现模拟虚拟化样机19
2.3.1模拟目标设定19
2.3.2技术方案20
2.3.3原程序处理器21
2.3.4运行时部件24
2.4本章小结28
第3章自动化分析原理29
3.1代码等价替换29
3.2垃圾指令生成32
3.3代码乱序33
3.4多分支跳转34
3.5自动化分析基础34
3.5.1代码等价替换技术35
3.5.2垃圾指令生成及清除35
3.5.3代码乱序处理35
3.5.4多分支跳转及清除36
3.5.5代码虚拟机技术36
第4章花型替换分析37
4.1定义花型38
4.2匹配花型40
4.3实施花型替换42
4.4打造花型替换机42
4.4.1功能制定43
4.4.2确定技术方案43
4.4.3开发筹备44
4.4.4具体实现44
4.4.5效果演示70
第2部分技术分析
第5章打造自动化分析工具74
5.1功能制定74
5.2确定技术方案75
5.3开发筹备76
5.4具体实现77
5.4.1实时代码虚拟机77
5.4.2代码执行记录89
5.4.3C语言脚本即时编译95
5.4.4代码实时监控执行103
5.4.5高级调试功能106
5.4.6调试界面改造106
5.4.7断点增强112
5.4.8代码回溯113
5.4.9预执行114
5.4.10实时代码块记录114
5.4.11脚本化增强调试117
5.4.12代码DNA功能123
5.5效果演示127
第6章代码虚拟机结构分析129
6.1虚拟机类型鉴别129
6.2OP分支跳转132
6.3OP分支探测134
6.4虚拟机栈145
6.5虚拟机Context149
6.6OPCODE编码152
6.7虚拟机出口156
6.8本章小结162
第7章OP分支功能性分析163
7.1统计分析法163
7.2栈平衡简化分析法165
7.3不精确花型替换分析法170
7.4内存状态着色分析法173
7.5内存访问定位分析法184
7.6本章小结187
第8章对比测试分析188
8.1一般代码对比分析法188
8.2OP分支执行对比分析法194
8.3内存访问记录对比分析法201
8.4严格现场对比分析法202
8.5本章小结205
第9章实时监控分析206
9.1一般代码实时监控分析法206
9.2Context实时监控分析法211
9.3内存状态实时同步监控分析法216
9.4块执行实时监控分析法225
9.5本章小结230
第10章OP实时调试分析231
10.1虚拟OP实时调试231
10.2直接OP实时调试234
10.3OP实时调试演示237
10.4本章小结241
第3部分实例分析
第11章Winlicense 2.3.2分析244
11.1加密流程分析245
11.1.1Winlicense主体框架245
11.1.2Shell代码生成249
11.2Winlicense加密技术252
11.3代码变形分析256
11.4代码虚拟机分析260
11.4.1代码虚拟机生成260
11.4.2FISH代码虚拟机267
11.4.3TIGER代码虚拟机272
11.4.4PUMA代码虚拟机274
11.4.5SHARK代码虚拟机276
11.4.6小结278
11.5OPCODE补丁278
11.6代码还原282
11.7本章小结286
第12章VMProtect分析287
12.1代码变形分析287
12.2OP分支DNA289
12.3OPCODE补丁291
12.4代码还原302
12.5本章小结305
第13章xVMDebug插件306
13.1xVMDebug介绍306
13.2运行环境306
13.3文件结构306
13.4插件安装306
13.5主要功能简介307
13.5.1调试功能307
13.5.2脚本功能309
13.5.3函数监视功能310
13.5.4伪调试功能311
13.5.5远端IDA功能311
13.5.6模块注入功能312
13.6操作说明313
13.6.1选项设置窗口313
13.6.2增强界面窗口315
13.6.3块执行管理窗口318
13.6.4CALL记录窗口320
13.6.5ASM窗口菜单322
13.6.6DUMP窗口菜单322
|
內容試閱:
|
前 言
在完成了《软件保护及分析技术原理与实践》一书以后,回顾该书的内容,发现基于该书的定位和目标,无法涉及更多软件安全领域的高阶技术,因此有了本书。
在现代软件安全技术中,代码加密技术,尤其是代码虚拟加密技术,已经成为最为主要的,同时也是最为有效的软件保护手段之一。尽管代码虚拟化技术不断成熟,但目前没有足够的相关文档和信息被公开,这使代码虚拟化技术成为一种封闭的黑箱技术,只有少部分人才能了解并运用它。
写作目的
虚拟化技术在现代计算机技术中占据着越来越重要的位置。在现代计算机系统中,从硬件到软件,从上层应用到系统底层,都需要虚拟化技术。
什么是虚拟化?虚拟化是一个泛指,在计算机中是指将某种逻辑行为发生的环境进行更换,使这种逻辑行为在不同环境中的发生和运行都能得到相同的逻辑结果的技术。传统的计算机虚拟化技术都是为了使程序在更加安全、稳定的环境中更加快捷、方便地完成特定的逻辑处理或者程序功能而设计的,但在计算机技术飞速发展的今天,很多事物都发生了质的变化,在虚拟化技术中同样如此。于是,在现代的虚拟化技术中出现了一个重要的分支代码虚拟化。
从广义上说,代码虚拟的目的也是使软件的逻辑行为运行在一个更加安全的环境中,但与其他虚拟化技术不同的是,代码虚拟化的安全目标是针对人而非计算机环境的,也就是说,代码虚拟机的实质并不是从技术上使程序的实际代码运行更加稳定或者更加安全,而是使代码的运行过程更为复杂,从而使他人难以理解代码自身的逻辑行为,防止代码运行流程被篡改或逆向。代码虚拟化技术的这种特征,使其超出了一般的技术范畴,成为一种在人与人之间借助软件安全进行博弈游戏的载体。
彻底理解代码虚拟化技术要从虚拟化和反虚拟化两个方面进行。在现代的代码虚拟化技术中,传统的反虚拟化技术的发展远远落后于虚拟化技术,而且遇到了难以跨越的障碍。这是因为随着计算机运算速度的加快,虚拟化技术可以使用大量的计算机运算来实现代码的虚拟化,大大膨胀和扩张虚拟化代码量,使代码的运行量达到一种难以人为进行分析的地步,从而使人工分析代码的逻辑和行为变得不切实际。
针对这种情况,自动化分析技术应运而生。既然代码虚拟可以利用计算机强大的运算能力,那么自动化分析技术也可以运用计算机的运算能力来帮助我们更加方便地理解这些代码。更富戏剧性的是,在自动化分析方面,我们使用较多也较为有效的技术恰恰是代码虚拟化技术,这就形成了利用虚拟化技术理解分析虚拟化技术的奇妙关系。在本书中,笔者将与读者一起感受这个代码中的虚拟世界。
本书内容
本书主要分成3部分来讨论代码虚拟和自动化分析技术。第1部分主要讨论代码虚拟的各种实现方法,并通过一些代码虚拟化技术的应用案例引领读者了解代码虚拟化的技术基础。第2部分主要介绍和讨论代码自动化分析技术,也就是针对我们了解的各种代码虚拟化技术,对如何对其进行理解和利用进行自动化分析,并通过实际的代码将自动化分析技术从理论变为实际程序,提升我们对自动化分析技术的理解和运用水平。第3部分使用自动化分析技术分析Winlicense与VMProtect保护系统,全面展示自动化分析技术,并通过这种实际的分析过程深入体会代码虚拟化技术。
章立春
2017年2月
|
|