第1章 加密解密技术基础 1
1.1 加密解密技术概述 2
1.1.1 什么是加密技术 3
1.1.2 为什么要进行加密/解密 4
1.1.3 加密技术的发展趋势 4
1.2 加密解密中的相关概念 5
1.3 几个常见的汇编语言命令 9
1.4 软件解密方式及注册保护方式 10
1.4.1 软件解密方式 10
1.4.2 软件注册保护方式 11
1.5 可能出现的问题与解决 13
1.6 总结与经验积累 13
第2章 代码分析技术 14
2.1 代码分析技术基础 15
2.1.1 初识PE格式文件 16
2.1.2 文件偏移地址与虚拟地址 17
2.1.3 寻找程序的入口点 19
2.1.4 如何转储程序 20
2.1.5 修复输入表 22
2.1.6 直接调用引入表函数 23
2.2 静态分析技术及流行工具 24
2.2.1 什么是静态分析 24
2.2.2 程序类型分析工具 25
2.2.3 资源编辑器工具 25
2.2.4 反汇编分析工具 28
2.3 动态分析技术及流行工具 29
2.4 注册表分析技术及流行工具 31
2.4.1 注册表编辑工具Regedit 31
2.4.2 注册表照相机Regsnap 34
2.4.3 注册表监视工具Regmon 36
2.4.4 注册表监视工具RegShot 37
2.4.5 注册表监视工具File Monitor 37
2.5 可能出现的问题与解决 38
2.6 总结与经验积累 38
第3章 常见的软件加密技术 39
3.1 口令加密技术概述 40
3.1.1 什么是口令加密技术 40
3.1.2 对软件的起始簇号实施口令加密 41
3.1.3 用口令加密可执行文件 41
3.2 激光加密技术基础 45
3.3 软件自毁技术的实现 47
3.3.1 自毁软件的基本原理 47
3.3.2 如何设计实现软件自毁 48
3.4 软件狗加密技术 52
3.4.1 什么是软件狗加密技术 52
3.4.2 加密狗的性能和一般特点 53
3.4.3 使用软件狗加密之技术弱点 54
3.5 用逆指令流技术实现加锁 55
3.6 伪随机数加密技术 56
3.7 可能出现的问题与解决 59
3.8 总结与经验积累 59
第4章 Win32编程技术 60
4.1 Win32调试API技术基础 61
4.1.1 调试相关函数概述 61
4.1.2 调试事件 64
4.1.3 在调试时创建并跟踪一个进程 66
4.1.4 调试循环体 67
4.1.5 调试事件的处理 68
4.1.6 在另一个进程中注入代码 70
4.2 利用调试API编写脱壳机 71
4.2.1 tElock脱壳概述 71
4.2.2 编写脱壳机 72
4.3 调试API制作内存补丁 78
4.3.1 跨进程内存存取机制 79
4.3.2 DebugAPI机制 80
4.4 可能出现的问题与解决 88
4.5 总结与经验积累 89
第5章 静态反汇编工具 90
5.1 认识静态反汇编工具 91
5.1.1 静态反汇编工具W32Dasm 91
5.1.2 静态分析软件IDA Pro 102
5.2 认识反汇编程序代码 113
5.2.1 程序的基本信息 113
5.2.2 程序的反汇编源代码 116
5.3 静态分析解密实战 117
5.3.1 静态分析解密的流程 117
5.3.2 常见指令的机器码值 118
5.3.3 两种注册判断的修改方法 119
5.3.4 静态分析解密实战 119
5.4 用keymake制作补丁程序 122
5.4.1 制作文件补丁程序 122
5.4.2 制作内存补丁程序 123
5.5 可执行文件编辑修改工具 124
5.5.1 Hiew使用简介 124
5.5.2 UltraEdit使用简介 127
5.5.3 HexWorkshop使用简介 131
3.5.4 WinHex使用简介 134
5.5.5 eXeScope使用简介 135
5.6 可能出现的问题与解决 137
5.7 总结与经验积累 137
第6章 动态跟踪分析工具 138
6.1 Ollydbg动态跟踪分析工具 139
6.1.1 认识O11ydbg的主窗口 140
6.1.2 配置Ollydbg 142
6.1.3 Ollydbg的常用功能与操作 142
6.1.4 常用的Ollydbg插件 145
6.2 Ollydbg动态调试解密 146
6.2.1 动态调试解密的流程 146
6.2.2 动态调试解密实战1 146
6.2.3 动态调试解密实战2 147
6.3 动态分析软件SoftICE 148
6.3.1 SoftICE安装后的配置 148
6.3.2 SoftICE的调用 152
6.3.3 SoftICE的窗口 152
6.3.4 组合键与常用命令 154
6.3.5 使SoftICE在程序的入口处停下来 162
6.3.6 实现多次跟踪 162
6.3.7 修改代码的属性 163
6.4 动态分析软件TRW2000 164
6.4.1 安装与配置TRW2000 164
6.4.2 TRW2000窗口概述 166
6.4.3 常用命令和功能键 168
6.5 可能出现的问题与解决 174
6.6 总结与经验积累 174
第7章 注册认证和注册机 175
7.1 加密算法和校验方式 176
7.1.1 选用加密算法 176
7.1.2 注册码直接校验 181
7.1.3 注册码重启校验 182
7.1.4 用户名保护实例 183
7.2 制作字典文件 185
7.2.1 用万能钥匙Xkey自制字典文件 185
7.2.2 自制字典文件Txt2Dic 187
7.2.3 实现字典攻击 188
7.3 随机注册码模式 188
7.3.1 随机注册码保护实例 188
7.3.2 注册机制作实例 190
7.4 KeyFile保护方式 191
7.4.1 KeyFile保护实例 191
7.4.2 注册机制作实例 192
7.5 用DLL实现注册认证 193
7.5.1 DLL认证的优点与缺点 193
7.5.2 实现多次跟踪 193
7.6 用控件实现注册认证 194
7.6.1 DLL控件认证的注册认证 194
7.6.2 BPL控件的注册认证 198
7.7 可能出现的问题与解决 200
7.8 总结与经验积累 201
第8章 神秘的壳技术 202
8.1 常见加壳软件和使用方法 203
8.1.1 壳作用和分类 203
8.1.2 UPX使用方法 204
8.1.3 ASPack使用方法 205
8.1.4 Armadillo使用方法 206
8.1.5 EncryptPE使用方法 210
8.2 常见查壳软件的使用方法 211
8.2.1 Language 2000使用方法 211
8.2.2 PEiDentifier使用方法 212
8.3 常见脱壳软件的使用方法 212
8.3.1 随机注册码保护实例 213
8.3.2 脱PECompact壳的软件 213
8.3.3 ProcDump软件的使用 214
8.3.4 UN-PACK软件使用 216
8.4 浅析手动脱壳技术 217
8.4.1 确定入口点(OEP) 217
8.4.2 抓取内存映像文件 218
8.4.3 重建PE文件 218
8.4.4 使用ImportREC手动脱壳 218
8.4.5 重建可编辑资源 222
8.5 可能出现的问题与解决 222
8.6 总结与经验积累 223
第9章 补丁技术大揭秘 224
9.1 程序补丁概述 225
9.1.1 补丁文件的组成 225
9.1.2 补丁的分类 226
9.2 常见的补丁工具 227
9.2.1 补丁制作工具CodeFusion使用方法 227
9.2.2 内存补丁制作工具R!SC'sPatcher 229
9.3 常见补丁技术的应用 231
9.3.1 对程序开始进行分析 231
9.3.2 确定配置方案 232
9.3.3 制作补丁程序 234
9.3.4 为程序添加功能 236
9.3.5 可执行文件的加密 237
9.4 常用的SMC技术 240
9.4.1 SMC函数概念 241
9.4.2 高级SMC补丁技术 242
9.5 注册机制作工具 243
9.5.1 寻找注册码 243
9.5.2 内存直接寻址法 245
9.5.3 寄存器间接寻址法 245
9.5.4 Decompile Winhelp注册机的写法 246
9.5.5 CrackCode的加强模式 247
9.6 可能出现的问题与解决 249
9.7 总结与经验积累 249
第10章 数据加密技术简述 250
10.1 密码学概述 251
10.1.1 数据加密技术简述 251
10.1.2 为什么要进行数据加密 252
10.1.3 数据加密的原理 252
10.1.4 加密技术与密码分析 253
10.2 对称密钥算法 256
10.2.1 对称密钥算法概述 256
10.2.2 DES算法概述 257
10.2.3 IDEA加密算法概述 259
10.2.4 对称密钥的加密模式 259
10.3 非对称密钥密码概述 261
10.3.1 非对称密钥密码概述 262
10.3.2 RSA非对称密钥密码概述 262
10.3.3 DSA数据签名技术 263
10.3.4 Diffie-Hellman密钥交换系统概述 263
10.4 邮件加密软件PGP 264
10.4.1 PGP概述 264
10.4.2 PGP的安全问题 266
10.5 可能出现的问题与解决 272
10.6 总结与经验积累 272
第11章 应用加密软件的使用 273
11.1 多媒体文件加密工具 274
11.1.1 Private Pix加密软件 274
11.1.2 CryptaPix加密软件 277
11.1.3 WinXFiles加密软件 278
11.2 多功能文件加密工具 280
11.2.1 “文件密使”加密工具 280
11.2.2 BlackBox加密工具 284
11.2.3 ABI-CODER加密工具 288
11.2.4 “加密精灵”加密工具 291
11.3 可能出现的问题与解决 295
11.4 总结与经验积累 295
第12章 网络验证技术应用 296
12.1 Web服务器验证加密技术 297
12.1.1 客户端加密实现 297
12.1.2 本地计算机控制实现 300
12.2 本地服务器验证加密技术 304
12.2.1 客户端加密实现 304
12.2.2 服务器端加密实现 306
12.3 在线升级验证加密技术 307
12.3.1 在线升级验证实现 307
12.3.2 在线升级验证示例 308
12.4 可能出现的问题与解决 313
12.5 总结与经验积累 314
第13章 应用软件加密解密技术 315
13.1 Word文件的加密解密 316
13.1.1 Word自身功能加密 316
13.1.2 利用AOPR解密Word文档 317
13.1.3 Advanced Word 2000 Password Recovery 319
13.1.4 风语文件加密 319
13.1.5 Word Document Password Recovery 320
13.1.6 Word Password Recovery 320
13.1.7 Word 97/2000/XP密码查看器 321
13.2 Excel文件加密解密 322
13.2.1 Excel自身功能 322
13.2.2 Advanced Excel 2000 Password Recovery 323
13.2.3 Excel Password Recovery 324
13.2.4 办公文件密码恢复程序 324
13.2.5 Excel Key 324
13.3 宏加密解密技术 325
13.3.1 使用宏进行加密 325
13.3.2 解除宏密码 327
13.4 加密解密WinZip压缩文件 328
13.4.1 使用WinZip加密 328
13.4.2 利用Advanced ZIP Password Recovery探测口令 329
13.4.3 Advanced Archive Password Recovery 329
13.4.4 Ultra Zip Password Cracker 330
13.5 加密解密WinRAR压缩文件 330
13.5.1 用WinRAR加密文件 330
13.5.2 使用RAR Key解开WinRAR口令 331
13.5.3 RAR Password Recovery 331
13.6 EXE文件的加密解密 332
13.6.1 用Aspack对EXE文件进行加密 332
13.6.2 用tElock对EXE文件进行加密 333
13.6.3 用“EXE加口令”对EXE文件进行加密 335
13.7 MS SQL Server密码破解 336
13.7.1 实现本地用户的账户登录 336
13.7.2 通过文件拷贝获得相关数据 337
13.7.3 多功能密码破解软件 337
13.8 如何探测FTP的密码 339
13.8.1 使用流光探测FTP口令 339
13.8.2 使用网络刺客Ⅱ探测FTP口令 340
13.8.3 使用流光针对专门的账户进行穷举探测 342
13.9 可能出现的问题与解决 342
13.10 总结与经验积累 343
第14章 编程技术与光盘加密解密技术 344
14.1 编程的相关技术资料 345
14.1.1 VXD、KMD、WDM基本概念 345
14.1.2 实现程序的自删除 346
14.1.3 用硬件信息实现共享软件安全注册 347
14.2 光盘的加密与解密技术 348
14.2.1 光盘加密流技术概述 349
14.2.2 使用CD-Protector软件加密光盘 350
14.2.3 使用FreeLock加密数据光碟光盘 351
14.2.4 破解加密光盘 355
14.2.5 加密MP3光盘的破解 356
14.2.6 用File Monitor对付隐藏目录的加密光盘 357
14.2.7 制作隐藏文件夹、超大文件 358
14.3 可能出现的问题与解决 362
14.4 总结与经验积累 362
参考文献 363