目录 第1章 基础知识 (1)(什么是API?什么是句柄?Windows与DOS下解密的最大区别就在此) 1.1
文本编码方式 (1)(让你认识ASCII和Unicode) 1.2 Windows API函数
(2) 1.2.1 Win API简介 (2) 1.2.2 什么是句柄 (4) 1.2.3 常用WIN32 API函数
(4) 1.3 Windows与Unicode (7)(Win98淘汰己成定局!所以了解Windows 2000/XP己迫在眉捷!其中Unicode是很关键的一点)
1.3.1 Windows 9x与Unicode (7) 1.3.2 Windows 2000/XP与Unicode
(9) 1.4 Windows消息机制 (9) 1.5 Windows注册表 (12) 1.5.1 注册表的逻辑结构 (12) 1.5.2
注册表相关函数 (13) 1.5.3 注册表分析软件 (15) 1.6 保护模式简介 (17) 1.6.1 虚拟内存
(18) 1.6.2 保护模式的权限级别 (19)
第2章 代码分析技术(本章能让你理解高级语言与汇编语言的联系,指导你如何从汇编代码理解程序的功能)
2.1 认识PE格式 2.1.1 PE格式 2.1.2 文件偏移地址与虚拟地址转换 (23) 2.2
代码指令 (25) 2.2.1 转移指令机器码的计算 (25) 2.2.2 条件设置指令 (28) 2.2.3 指令修改技巧
(29) 2.2.4 浮点指令 (30) 2.3 逆向分析技术 (33)(本节一定得掌握,这样以后你就能轻松地分析各汇编代码的功能了。) 2.3.1
函数 (33) 2.3.2 循环 (37) 2.3.3 控制语句 (38) 2.3.4 全局变量 (38) 2.3.5
字串初始化 (39)
第3章 静态分析技术 (40)
3.1 文件类型分析 (40) 3.1.1
FileInfo工具 (40) 3.1.2 PEiD工具 (41) 3.2 资源 (42) 3.2.1 资源黑客的使用
(42) 3.2.2 eXeScope的使用 (44) 3.3 W32Dasm使用介绍 (44) 3.3.1 准备工作
(44) 3.3.2 操作步骤 (46) 3.3.3 代码清单的阅读 (52) 3.4 IDA Pro使用简介 (57)(你想逆向工程吗?就用它!本书花了25页来讲述它的用法)
3.4.1 IDA文件 (58) 3.4.2 IDA配置文件 (58) 3.4.3 IDA菜单选项配置
(60) 3.4.4 打开文件 (62) 3.4.5 IDA主窗口界面 (63) 3.4.6 注释 (64) 3.4.7
交叉参考 (64) 3.4.8 查找字符串 (65) 3.4.9 参考重命名 (65) 3.4.10 标签的用法
(66) 3.4.11 进制的转换 (67) 3.4.12 手工识别代码和数据 (67) 3.4.13 数组(Arrays)
(68) 3.4.14 结构体(Structures) (68) 3.4.15 枚举类型(Enumerated Types) (70) 3.4.16
堆栈变量 (71) 3.4.17 IDC脚本 (72) 3.4.18 FLIRT (77) 3.4.19 插件 (78) 3.4.20
输出 (79) 3.4.21 小结 (80) 3.5 文件编辑工具 (80) 3.5.1 Hiew使用 (80) 3.5.2
HexWorkshop使用 (85) 3.5.3 WinHex使用 (87) 3.6 静态分析技术应用实例 (88) 3.6.1
解密初步 (88) 3.6.2 逆向工程初步 (89)
第4章 动态分析技术 (92)
4.1
SoftICE调试器 (92)(以最新的DriveStudio为讲解平台!) 4.1.1
安装 (92) 4.1.2 调试窗口简介 (99) 4.1.3 窗口操作 (102) 4.1.4 SoftICE配置
(105) 4.1.5 SoftICE常用命令简介 (111) 4.1.6 SoftICE调试技术 (115) 4.1.7
SoftICE的符号调试技术 (123) 4.1.8 断点 (132) 4.1.9 SoftICE远程调试 (139) 4.1.10
IceDump和NticeDump的使用 (144) 4.2 TRW2000调试器 (150) 4.2.1 安装 (150) 4.2.2
配置 (150) 4.2.3 输出信息(Export)的装载 (151) 4.2.4 TRW2000操作 (151) 4.2.5
条件断点 (153) 4.2.6 符号调试 (154) 4.3 OllyDbg调试器 (154) 4.3.1 OllyDbg界面
(154) 4.3.2 基本操作 (156) 4.3.3 实例 (157) 4.4 常见问题小结 (158)
第5章
软件保护技术及其弱点 (160)(所有的实例全部重写,注释详尽)
5.1 序列号保护方式
(160) 5.1.1 序列号保护机制 (160) 5.1.2 如何攻击序列号保护 (162) 5.1.3 字符处理代码分析
(164) 5.1.4 注册机制作 (167) 5.1.5 浮点数 (172) 5.2 警告(Nag)窗口 (175) 5.3
时间限制 (177) 5.3.1 计时器 (177) 5.3.2 时间限制 (179) 5.3.3 拆解时间限制保护
(180) 5.4 菜单功能限制 (182) 5.4.1 相关函数 (182) 5.4.2 拆解菜单限制保护 (183) 5.5
Key File保护 (183) 5.5.1 相关API函数 (183) 5.5.2 拆解Key File的一般思路 (185) 5.5.3
文件监视工具FileMon (185) 5.5.4 拆解KeyFile保护 (187) 5.6 CD-Check (192) 5.6.1
相关函数 (192) 5.6.3 拆解光盘保护 (194) 5.7 只运行一个实例 (194) 5.7.1 实现方案
(195) 5.7.2 实例 (196) 5.8 常用断点设置技巧 (196) 5.9 关于软件保护的一般性建议 (197)
第6章
加密算法 (199)(现在研究加解密,不了解点密码学知识,真是不可思议的)
6.1
单向散列算法 (199) 6.1.1 MD5算法 (199) 6.1.2 SHA算法 (201) 6.1.3 CRC算法
(203) 6.2 公开密钥算法 (206) 6.2.1 RSA算法 (206) 6.2.2 ElGamal算法 (212) 6.2.3
DSA算法 (217) 6.3 对称算法 (218) 6.3.1 Blowfish算法 (218) 6.4 其他算法 (221) 6.4.1
Base64编码 (221) 6.4.2 Crypto API (222) 6.5 小结 (223)
第7章 反编译语言
(225)
7.1 Visual Basic程序 (225)(增加了Pcode程序调试内容) 7.1.1
Visual Basic字符编码方式 (225) 7.1.2 VB3和VB4反编译 (226) 7.1.3 动态分析VB3和VB4程序
(226) 7.1.4 动态分析VB5和VB6程序 (229) 7.1.5 SmartCheck调试工具 (236) 7.1.5
伪编译(P-code) (241) 7.2 Delphi/ C++ Builder程序 (250) 7.2.1 认识Delphi (250) 7.2.2
DeDe反编译器 (250) 7.2.3 断点 (256) 7.3 Java程序 (257) 7.3.1 JVM指令系统
(258) 7.3.2 JVM寄存器 (258) 7.3.3 JVM堆栈结构 (258) 7.3.4 JVM碎片回收堆
(258) 7.3.4 JVM存储区 (259) 7.4 InstallShield反编译 (262) 7.4.1 安装文件构成
(262) 7.4.2 脚本语言反编译 (262) 7.4.3 IS解密 (263) 第8章 PE文件格式
(265)(全面重写,图文并貌,特别加重了输入表、基址重定位表的讲解,为脱壳打好基础) 8.1
PE文件结构 (265) 8.1.1 PE的基本概念 (265) 8.1.2
DOS插桩程序 (267) 8.1.3 PE文件头(IMAGE_NT _HEADERS) (268) 8.1.4
块表(The Section Table) (274) 8.1.5 各种块(Sections)的描述
(276) 8.1.6 输入表(Import Table) (277) 8.1.7
绑定输入(Bound import) (284) 8.1.8 输出表(Export Table)
(285) 8.1.8 基址重定位表(Base ReloCation Table) (287) 8.1.9
资源 (290) 8.1.10 PE格式小结 (292) 8.2
PE编辑工具 (292) 8.2.1 LordPE使用简介 (292) 8.2.2
PEditor使用简介 (295)
第9章 增加PE文件功能 (296)(新增的一章,学完这章,你也可以做QQ显IP补丁了,你可以二次开发软件了)
9.1 数据对齐 (296) 9.2
增加区块(Section) (296) 9.2.1 手工构造区块 (297) 9.2.2
工具辅助构造区块 (298) 9.3 增加输入函数 (298) 9.3.1
手工增加 (298) 9.3.2 工具辅助 (299) 9.4
增加DLL文件 (300) 9.5 窗口函数 (301) 9.6
增加菜单功能 (304) 9.6.1 扩充WndProc (305) 9.6.2
Exit菜单 (305) 9.6.2 Open菜单 (306) 9.6.3
Save菜单 (309) 9.7 用DLL增加功能 (313) 9.7.1
创建DLL文件 (313) 9.7.2 调用DLL函数 (313) 9.8
修复基址重定位表 (314) 9.9 增加输出函数 (317)
第10章
反跟踪技术 (319)(增加SEH技术,本章是从解密角度来谈反跟踪技术的,其编程具体实现细节见续集)
10.1
结构化异常处理 (319) 10.1.1 异常列表 (319) 10.1.2
SEH异常处理 (320) 10.1.3 异常信息 (322) 10.1.4
系统异常调试程序 (325) 10.1.5 异常处理回调函数 (327) 10.2
反调试技术 (330) 10.3 花指令 (339) 10.4
反-反调试技术 (344) 10.4.1 SuperBPM (344) 10.4.2
FrogsICE (344) 10.4.3 在Windows 2000/XP下隐藏SoftICE
(348) 10.5 反跟踪实例 (349) 10.5.1
Anti-SoftICE (349) 10.5.2 Anti-Spy (350) 10.5.3
Anti-DeDe. (351)
第11章 加壳与脱壳 (353)(全部重写,学完后,市面上80%的壳应没问题了,特别脱DLL文件的壳也是本书特色之一!)
11.1 认识壳 (353) 11.1.1
壳的概念 (353) 11.1.2 壳的加载过程 (354) 11.2
加壳工具 (355) 11.2.1 ASPacK (356) 11.2.2
UPX (357) 11.2.3 PECompact (357) 11.2.4
ASProtect (358) 11.2.5 tElock(359) 11.2.6
幻影 (359) 11.3 专用脱壳软件 (359) 11.3.1
ASPack (360) 11.3.2 UPX (360) 11.3.3
ASProtect (361) 11.4 通用脱壳软件 (361) 11.4.1
ProcDump使用简介 (362) 11.4.2 File Scanner使用简介 (368) 11.5
手动脱壳 (369) 11.5.1 查找入口点 (369) 11.5.2
抓取内存映像文件 (372) 11.5.3 重建输入表 (375) 11.5.4
ImportREC使用指南 (379) 11.5.5 Revirgin使用指南 (385) 11.5.6
重建可编辑资源 (389) 11.6 压缩保护的壳 (389) 11.6.1
ASPack的壳 (389) 11.6.2 PECompact的壳 (394) 11.6.3
PE-PaCK的壳 (397) 11.6.4 Petite的壳 (401) 11.7
加密保护的壳 (403) 11.7.1 ASProtect加密保护 (403) 11.7.2
tElock加密保护 (416) 11.8 DLL文件 (423) 11.8.1
ASPack的壳 (424) 11.8.2 PECompact的壳 (427) 11.8.3
UPX的壳 (431) 11.8.4 ASProtect的壳 (434) 11.8.5
tElock的壳 (435) 11.9 脱壳小结 (437)
第12章
补丁技术 (439)(这次加强了SMC技术讲解,学完本章,SMC不再是一种体力活了)
12.1
补丁原理 (439) 12.1.1 文件补丁 (439) 12.1.2
内存补丁 (441) 12.2 补丁工具 (443) 12.2.1
文件补丁工具 (443) 12.2.2 内存补丁工具 (445) 12.3
SMC补丁技术 (445) 12.3.1 单层SMC技术 (446) 12.3.2
多层SMC技术 (447) 12.3.3 SMC函数 (449)
第13章
商用软件保护技术 (451)
13.1 软件狗(Dongles) (451) 13.1.1
软件狗介绍 (451) 13.1.2 软件狗厂商 (452) 13.1.3
软件狗的弱点 (453) 13.2 Vbox保护技术 (454) 13.2.1
Vbox 4.03版本 (454) 13.2.2 Vbox 4.2版本 (456) 13.2.3
Vbox 4.3版本 (458) 13.3 SalesAgent保护技术 (459) 13.3.1
从"现在购买(BUY NOW)"入手 (459) 13.3.2 暴力去除SalesAgent的保护
(461) 13.4 SoftSENTRY保护技术 (462) 13.5
TimeLOCK保护技术 (464) 13.6 Flexlm保护 (466) 13.6.1
License文件格式 (466) 13.6.2 设置环境变量 (468) 13.6.3
Flexlm Server (469) 13.6.4 FlexGen工具用法 (470) 13.6.5
利用FlexLm SDK解密 (472)
附录A 浮点指令 (477) 附录B SoftICE操作手册 (480) 附录C
TRW2000手册 (517) 参考文献 (520) |