探究软件保护领域的“黑箱”代码虚拟化技术,运用自动化分析技术理解代码,畅游代码中的虚拟世界。
本书主要分成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.1 Bochs简单分析 12
2.1.1 模拟CPU对象 13
2.1.2 译码器 15
2.1.3 解码执行器 16
2.1.4 OP代码分支 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.3 C语言脚本即时编译 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.2 OP分支跳转 132
6.3 OP分支探测 134
6.4 虚拟机栈 145
6.5 虚拟机Context 149
6.6 OPCODE编码 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.2 OP分支执行对比分析法 194
8.3 内存访问记录对比分析法 201
8.4 严格现场对比分析法 202
8.5 本章小结 205
第9章 实时监控分析 206
9.1 一般代码实时监控分析法 206
9.2 Context实时监控分析法 211
9.3 内存状态实时同步监控分析法 216
9.4 块执行实时监控分析法 225
9.5 本章小结 230
第10章 OP实时调试分析 231
10.1 虚拟OP实时调试 231
10.2 直接OP实时调试 234
10.3 OP实时调试演示 237
10.4 本章小结 241
第3部分 实例分析
第11章 Winlicense 2.3.2分析 244
11.1 加密流程分析 245
11.1.1 Winlicense主体框架 245
11.1.2 Shell代码生成 249
11.2 Winlicense加密技术 252
11.3 代码变形分析 256
11.4 代码虚拟机分析 260
11.4.1 代码虚拟机生成 260
11.4.2 FISH代码虚拟机 267
11.4.3 TIGER代码虚拟机 272
11.4.4 PUMA代码虚拟机 274
11.4.5 SHARK代码虚拟机 276
11.4.6 小结 278
11.5 OPCODE补丁 278
11.6 代码还原 282
11.7 本章小结 286
第12章 VMProtect分析 287
12.1 代码变形分析 287
12.2 OP分支DNA 289
12.3 OPCODE补丁 291
12.4 代码还原 302
12.5 本章小结 305
第13章 xVMDebug插件 306
13.1 xVMDebug介绍 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.4 CALL记录窗口 320
13.6.5 ASM窗口菜单 322
13.6.6 DUMP窗口菜单 322
在完成了《软件保护及分析技术——原理与实践》一书以后,回顾该书的内容,发现基于该书的定位和目标,无法涉及更多软件安全领域的高阶技术,因此有了本书。
在现代软件安全技术中,代码加密技术,尤其是代码虚拟加密技术,已经成为最为主要的,同时也是最为有效的软件保护手段之一。尽管代码虚拟化技术不断成熟,但目前没有足够的相关文档和信息被公开,这使代码虚拟化技术成为一种封闭的“黑箱技术”,只有少部分人才能了解并运用它。
写作目的
虚拟化技术在现代计算机技术中占据着越来越重要的位置。在现代计算机系统中,从硬件到软件,从上层应用到系统底层,都需要虚拟化技术。
什么是虚拟化?虚拟化是一个泛指,在计算机中是指将某种逻辑行为发生的环境进行更换,使这种逻辑行为在不同环境中的发生和运行都能得到相同的逻辑结果的技术。传统的计算机虚拟化技术都是为了使程序在更加安全、稳定的环境中更加快捷、方便地完成特定的逻辑处理或者程序功能而设计的,但在计算机技术飞速发展的今天,很多事物都发生了质的变化,在虚拟化技术中同样如此。于是,在现代的虚拟化技术中出现了一个重要的分支——代码虚拟化。
从广义上说,代码虚拟的目的也是使软件的逻辑行为运行在一个更加安全的环境中,但与其他虚拟化技术不同的是,代码虚拟化的安全目标是针对人而非计算机环境的,也就是说,代码虚拟机的实质并不是从技术上使程序的实际代码运行更加稳定或者更加安全,而是使代码的运行过程更为复杂,从而使他人难以理解代码自身的逻辑行为,防止代码运行流程被篡改或逆向。代码虚拟化技术的这种特征,使其超出了一般的技术范畴,成为一种在人与人之间借助软件安全进行博弈游戏的载体。
彻底理解代码虚拟化技术要从虚拟化和反虚拟化两个方面进行。在现代的代码虚拟化技术中,传统的反虚拟化技术的发展远远落后于虚拟化技术,而且遇到了难以跨越的障碍。这是因为随着计算机运算速度的加快,虚拟化技术可以使用大量的计算机运算来实现代码的虚拟化,大大膨胀和扩张虚拟化代码量,使代码的运行量达到一种难以人为进行分析的地步,从而使人工分析代码的逻辑和行为变得不切实际。
针对这种情况,自动化分析技术应运而生。既然代码虚拟可以利用计算机强大的运算能力,那么自动化分析技术也可以运用计算机的运算能力来帮助我们更加方便地理解这些代码。更富戏剧性的是,在自动化分析方面,我们使用较多也较为有效的技术恰恰是代码虚拟化技术,这就形成了利用虚拟化技术理解分析虚拟化技术的奇妙关系。在本书中,笔者将与读者一起感受这个代码中的虚拟世界。
本书内容
本书主要分成3部分来讨论代码虚拟和自动化分析技术。第1部分主要讨论代码虚拟的各种实现方法,并通过一些代码虚拟化技术的应用案例引领读者了解代码虚拟化的技术基础。第2部分主要介绍和讨论代码自动化分析技术,也就是针对我们了解的各种代码虚拟化技术,对如何对其进行理解和利用进行自动化分析,并通过实际的代码将自动化分析技术从理论变为实际程序,提升我们对自动化分析技术的理解和运用水平。第3部分使用自动化分析技术分析Winlicense与VMProtect保护系统,全面展示自动化分析技术,并通过这种实际的分析过程深入体会代码虚拟化技术。
章立春
2017年2月
这本书的名字叫做《代码虚拟与自动化分析》,我拿到手的时候,确实被这个书名吸引了。我一直对代码运行背后的原理以及如何让机器来理解和分析代码这方面很感兴趣,总觉得这是一个非常有潜力的领域。我平时接触的主要是应用开发,对底层的东西了解不多,所以看到“代码虚拟”这个词,就觉得可能是在讲如何构建一个模拟的代码运行环境,这本身就是一个很有挑战性的技术,能让我窥见那些平时无法直接观察到的代码执行过程。而“自动化分析”则更直接地指向了效率和智能化,我一直希望能找到一些方法,让代码的质量检查、漏洞扫描、性能优化等过程更加高效,而不是停留在人工review的阶段。《代码虚拟与自动化分析》这个名字,让我联想到很多我工作中遇到的痛点,比如如何快速定位bug,如何保证代码的安全性,如何优化资源利用率等等。我期待这本书能提供一些新颖的视角和实用的方法论,帮助我理解这些自动化工具是如何工作的,甚至我能不能自己动手构建一些简单的分析工具。书的封面设计也比较简洁大气,排版上也显得比较专业,这些都给我留下了不错的初印象。我希望书中不仅仅是理论的阐述,最好能有一些实际的案例,或者能指导读者如何去实践,哪怕是简单的demo也很有价值。我对这本书的期望值很高,希望它能够成为我技术栈上的一块有力补充。
评分《代码虚拟与自动化分析》这本书,从书名就传递出一种精炼且富有前瞻性的信息。我一直觉得,软件工程不仅仅是代码的堆砌,更是对逻辑、对效率、对安全的极致追求。《代码虚拟》这个概念,让我立刻想到了一系列有趣的可能性,比如如何构建一个逼真的模拟环境来测试软件在各种极端条件下的表现,或者如何通过虚拟化技术来隔离和分析潜在的恶意代码,而无需承担实际风险。这对于提升软件的安全性和鲁棒性,我感觉有着巨大的潜力。而“自动化分析”则更是直接切中了我工作中的一个关键需求——如何让繁琐、耗时的人工代码审查过程变得更加智能和高效。我设想这本书能够提供关于自动化代码分析的各种方法论,从传统的静态分析规则,到更复杂的动态污点跟踪,甚至可能涉及到一些利用机器学习来预测代码缺陷的先进技术。我非常期待书中能够详细阐述这些自动化分析工具是如何工作的,它们各自的适用范围是什么,以及在实际项目中,如何有效地引入和运用这些技术来提升代码质量和开发效率。这本书给我的感觉,是一本能够引领我进入软件分析新时代的大门钥匙。
评分这本《代码虚拟与自动化分析》的装帧确实给我留下了深刻印象,纸张的触感很好,印刷的字迹清晰锐利,翻阅起来有一种扎实的质感。书页的边缘也处理得非常细致,没有毛刺感,这在细节上体现了出版方的用心。封面设计,我想说它有一种沉静而又不失力量的美感,采用了比较柔和的色彩搭配,但同时图形的线条又显得非常利落,仿佛在暗示着一种逻辑的严谨与秩序。我喜欢这种不张扬但内涵丰富的风格,它不会像一些封面那样喧宾夺主,而是静静地吸引你,让你想要去探索书中的内容。拿到书后,我迫不及待地翻看了一下目录,虽然我还没有深入阅读,但仅仅是标题的排列和术语的运用,就让我感受到了这本书的专业性和深度。我个人对编程语言的内部机制以及编译器的工作原理一直抱有强烈的好奇心,而“代码虚拟”这个概念,在我看来,很可能就触及到了这个领域的核心。我期待这本书能够以一种清晰易懂的方式,揭示代码是如何在计算机中被执行、被理解的,并且是如何通过自动化手段对这个过程进行深度分析的。这本书给我一种感觉,它不是一本速成的教材,而是一本值得反复研读、能够提供长久价值的参考书。
评分拿到《代码虚拟与自动化分析》这本书,我第一个感觉就是它的分量。不是说它有多厚,而是它的主题所蕴含的技术深度。我最近在思考如何能够更深入地理解软件的本质,而不仅仅停留在API的调用和功能的实现上。书名中的“代码虚拟”,让我联想到能否构建一个环境,让代码如同生物一样,能在其中被观察、被剖析。这对于调试那些难以捉摸的bug,理解跨平台兼容性问题,甚至预测代码的行为,都可能提供一种全新的思路。而“自动化分析”则是我一直在努力的方向。想象一下,如果能够让工具自动检查代码是否存在潜在的安全隐患,自动评估代码的性能瓶颈,自动优化代码结构,那将极大地解放开发者的双手,让他们能更专注于创新性的工作。我希望这本书能详细介绍代码虚拟的底层机制,例如如何模拟CPU、内存、操作系统环境等等,并且能提供一些实现代码自动化分析的经典算法和框架。如果书中能有一些不同类型的自动化分析技术(比如静态分析、动态分析、污点分析等)的对比和应用场景的讲解,那就再好不过了。这本书给我的感觉,是一本能够帮助我从“写代码”走向“理解代码”再到“优化代码”的哲学指南。
评分我对于《代码虚拟与自动化分析》这本书的期待,更多地来自于它所涵盖的技术方向的吸引力。我目前的工作主要集中在软件开发的实践层面,对于如何提升开发效率、保证代码质量以及如何识别和规避潜在风险,我一直在积极地探索。这本书的书名,直接点明了“虚拟”和“自动化分析”这两个关键点。在我看来,“代码虚拟”很可能意味着一种对代码执行环境的模拟,这对于理解复杂的软件行为、进行安全漏洞的复现以及在隔离环境中进行测试非常有帮助。而“自动化分析”则直击软件开发流程中的痛点,如何摆脱繁琐的人工审查,利用技术手段实现代码的自动检测和评估,这对于提高整个开发团队的生产力至关重要。我希望这本书能够为我提供一些关于代码虚拟化技术的基本原理和实现思路,并且深入讲解自动化代码分析方法的种类、优缺点以及实际应用场景。我尤其关注书中是否会涉及一些前沿的分析技术,例如基于模型检测、符号执行或者机器学习的代码分析方法,如果能有一些相关的技术细节或者案例分享,那将是极大的收获。这本书给我的感觉,是一本能够连接理论与实践的桥梁,有望为我打开一个全新的技术视野。
评分好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评
评分太难,无趣
评分不错,不错,不错,不错,不错,不错,不错,不错,不错
评分好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评好评
评分……………………………………
评分不错,不错,不错,不错,不错,不错,不错,不错,不错
评分应该还不错,我就是评个价。
评分不错,不错,不错,不错,不错,不错,不错,不错,不错
评分应该还不错,我就是评个价。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有