1.1 壳的概念、作用和分类 1
第1章 基础知识 1
1.2 常见的加壳软件和使用方法 2
1.2.1 UPX 3
1.2.2 ASPack 3
1.2.3 Armadillo 4
1.2.4 EncryptPE 11
1.3 使用壳的SDK保护程序 13
1.4.1 FileInfo 19
1.4 查壳软件及使用方法 19
1.4.2 PEiDentifier 20
1.5 脱壳软件及使用方法 22
1.5.1 通用脱壳软件及使用方法 22
1.5.2 专用脱壳软件及使用方法 24
1.6 汇编语言基础知识 24
1.6.1 汇编语言基本概念 25
1.6.2 常用的汇编语言语句 26
1.7 字符编码方式 27
1.8.1 软件解密方式 28
1.8 软件解密方式及注册保护方式 28
1.8.2 软件注册保护方式 29
第2章 静态反汇编 32
2.1 常用反汇编工具介绍 32
2.2 反汇编程序代码简介 34
2.2.1 程序的基本信息 35
2.2.2 程序的反汇编源代码 37
2.2.3 源代码各部分的含义 38
2.3.1 W32Dasm的功能简介 40
2.3 反汇编工具的功能简介 40
2.3.2 C32asm功能简介 46
2.4 静态分析解密实例 49
2.4.1 静态分析解密的一般过程 49
2.4.2 静态分析解密实例1 49
2.4.3 常见指令的机器码值 53
2.4.4 两种注册判断的修改方法 53
2.4.5 静态分析解密实例2 54
2.5 利用keymake做补丁程序 56
2.5.1 制作文件补丁程序 57
2.5.2 制作内存补丁程序 58
3.1 常用调试工具的简单介绍 60
第3章 动态调试 60
3.2 Ollydbg功能简介 62
3.2.1 Ollydbg主界面简介 62
3.2.2 配置Ollydbg 64
3.2.3 Ollydbg的常用功能及操作 64
3.2.4 常用的Ollydbg插件 67
3.3 Ollydbg动态调试解密实例 68
3.3.1 动态调试解密的一般过程 68
3.3.2 动态调试实例1 69
3.3.3 动态调试实例2 71
3.4 用Keymake制作内存注册机 72
3.5 用Ollydbg手动脱壳 77
3.5.1 手动脱壳的步骤 77
3.5.2 辅助工具简介 78
3.5.3 Ollydbg手动脱UPX壳实例 79
3.6 SoftICE安装及功能简介 84
3.6.1 SoftICE的安装配置过程 84
3.6.2 SoftICE常用功能及操作 90
3.6.3 SoftICE调试实例 93
3.7 Trw2000功能简介 93
4.1.1 16进制编辑工具WinHex 95
第4章 辅助工具 95
4.1 编辑工具 95
4.1.2 汇编编辑工具RTA 100
4.2 监视工具 101
4.2.1 文件监视工具 101
4.2.2 注册表监视工具 102
4.2.3 API监视工具 105
4.2.4 MFC监视工具mfcspy 108
4.3 资源工具 109
4.3.1 资源修复工具 109
4.3.2 常用资源编辑工具 111
4.3.3 Restools系列资源工具 115
4.4 补丁工具 117
4.4.1 dUP的使用 118
4.4.2 XCell的使用 124
第5章 不同注册保护方式的分析 126
5.1 简单的注册码保护方式 126
5.1.1 追踪简单算法实例 126
5.1.2 API函数常用断点及实例 130
5.2 按钮功能限制 138
5.2.1 按钮限制解密实例1 138
5.2.2 按钮限制解密实例2 139
5.3.1 NAG窗口实例1 140
5.3 NAG窗口 140
5.3.2 NAG窗口实例2 142
5.4 加密狗 145
5.4.1 判断加密狗类型 146
5.4.2 加密狗解密实例1 146
5.4.3 加密狗解密实例2 147
6.1 InstallShield 149
6.1.1 获取安装序列号 149
第6章 安装包程序 149
6.1.2 Setup.ins(inx)安装脚本的解密 151
6.1.3 编辑CAB压缩包 156
6.2 Wise 159
6.3 Setup Factory 160
6.3.1 解压缩安装包 160
6.3.2 动态调试安装序列号 160
6.3.3 静态分析安装序列号 164
6.4 InnoSetup 165
6.5 微软MSI 167
7.1 Delphi程序 170
第7章 不同编程语言的加解密工具及使用方法 170
7.2 VB本机代码程序 177
7.2.1 VB程序的编译方式 177
7.2.2 VB反编译工具VBExplorer 178
7.2.3 VB动态调试工具SmartCheck 181
7.3 VB P-代码程序 186
7.3.1 P-代码反编译工具 187
7.3.2 P-代码调试工具 188
7.3.3 WKTVBDE解密实例 192
7.4 VBA程序 194
7.4.1 VBA常用工具简介 195
7.4.2 VBA程序解密实例 196
7.5 VFP程序 203
7.5.1 VFP加密工具 203
7.5.2 VFP解密工具 206
7.5.3 VFP反编译工具 208
7.5.4 VFP解密实例1 209
7.5.5 VFP解密实例2 212
7.6 PB程序 215
7.6.1 PB反编译工具 215
7.6.2 PB解密实例 217
7.7 ASP程序 219
7.7.1 ASP程序的加密 219
7.7.2 ASP程序解密实例1 220
7.7.3 ASP程序解密实例2 227
7.7.4 ASP程序解密实例3 228
7.8 易语言程序 232
7.9 其他语言程序 239
7.9.1 Java 239
7.9.2 .NET 241
第8章 基本的软件保护措施及实现 244
8.1 获取硬件信息 245
8.2 对抗破解的基本手段 254
8.2.1 对抗DeDe 254
8.2.2 对抗动态调试 255
8.2.3 对抗SoftICE 256
8.2.4 对抗静态分析 257
8.2.5 磁盘文件自校验 259
8.3 使用壳程序来保护 264
8.3.1 压缩壳(Packer)的应用 265
8.3.2 保护壳(Protector)的应用 269
8.4.1 VMProtect简介 275
8.4 VMProtect的应用 275
8.4.2 利用VMProtect保护程序 276
8.5 利用伪装壳制造虚假信息 282
8.6 应用加密锁来保护程序 284
8.6.1 应用Rockey2的技巧 284
8.6.2 加密锁应用建议 289
8.7 一些加密时有用的代码 289
8.8 一点建议 294
第9章 软件保护实践 296
9.1 把ASP编写成DLL 296
9.2 COM组件的Delphi实现 302
9.3 给程序加入网络验证机制 310
9.4 非明码比较在程序中的应用 315
9.5 实现软件注册保护的vcl组件简介 319
9.6 关于PE文件结构的简单理解 325
9.6.1 检测PE文件格式 326
9.6.2 PE文件入口点和Section的理解 329
9.6.3 伪装壳原理的简单分析 337
9.6.4 模拟PEiD的查壳功能 340
参考文献 345