加密与解密:第二版

加密与解密:第二版
作 者: 段钢
出版社: 电子工业出版社
丛编项: 安全技术大系
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 加密与解密
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《加密与解密:第二版》作者简介

内容简介

前言自计算机诞生之日起,其技术的发展可谓日新月异,各种新技术、新思路不断涌现。个人计算机操作系统也经历了DOS,Windows3.x,Windows9x,Windows2000及WindowsXP的历程。各种应用软件从最初的几个、几十个字节发展到现在的动辄几张光盘,成千上万的共享软件和商业软件越来越庞大,技术内涵也日趋复杂。一款优秀的软件,其技术秘密往往成为他人窃取的重点。作为软件开发人员,为了保护自己辛辛苦苦开发的软件不轻易被他人“借鉴”,有必要对软件保护(加密)和破解(解密)技术进行研究。但是,软件保护和破解方面的资料目前比较匮乏,许多软件开发人员不得不自行摸索,导致在重复劳动中走了不少弯路,耗费了大量的时间和精力。随着软件以共享方式在网络上发布这种方式的流行,软件保护和数据加密技术的迫切性被越来越突出地表现了出来。软件加解密的发展历史我们通常是随着操作系统的不断升级来划分相应的软件,所以划分软件加解密的发展历史就是操作系统发展的历史。1.DOS时期这个时代的软件主要是正式版和功能不全的Demo版以及一些磁盘防拷贝保护,很少有所谓的共享软件(Shareware)。所以DOS时代所谓的解密通常是去掉软件中的某些限制或跳过原版磁盘检查,然后通过广大业余的BBS提供下载。但值得一提的是,这个时代的软件由于16位操作系统很容易接触到系统底层的原因,而导致个别软件保护方式异常强悍,又因为在16位平台上很难区分系统领空和程序领空而导致天然的破解跟踪困难,所以这个时代的软件保护机制两极分化很严重。2.Windows95早期当Windows95出现的时候,很多人不适应这个平台,它上面的加解密资料奇缺,对许多人来说就像做了一场恶梦。这段时期共享软件渐渐地盛行起来,采用序列号保护的共享软件越来越多。由于当时许多程序员对刚刚出现的Windows95不了解,感觉有些手足无措,编制的软件在加密部分都比较脆弱,所以那时候的序列号加密方案特别脆弱。3.Windows95末期其实这段时期应该是Windows95和Windows98共存的时期。在这个时期,程序员已经对Windows9x这个系统了如指掌,一些需要较高编程技巧、与系统核心等底层联系紧密的软件纷纷出笼。这个时期,共享软件大多还是采用序列号加密方式,但其序列号通常经过复杂的计算,所以很难像早期的软件一样,随随便便就能被解密。4.Windows2000/XP时期这段时期就是Wi...

图书目录

第1章 基础知识

1.1 文本编码方式

1.2 WINDOWS API函数

1.2.1 Win API简介

1.2.2 什么是句柄

1.2.3 常用Win32 API函数

1.3 WINDOWS与UNICODE

1.3.1 Windows 9x与Unicode

1.3.2 Windows 2000/XP与Unicode

1.4 WINDOWS消息机制

1.5 WINDOWS注册表

1.5.1 注册表的逻辑结构

1.5.2 注册表相关函数

1.5.3 注册表分析软件

1.6 保护模式简介

1.6.1 虚拟内存

1.6.2 保护模式的权限级别

第2章 代码分析技术

2.1 认识PE格式

2.1.1 PE格式

2.1.2 文件偏移地址与虚拟地址转换

2.2 代码指令

2.2.1 转移指令机器码的计算

2.2.2 条件设置指令

2.2.3 指令修改技巧

2.2.4 浮点指令

2.3 逆向分析技术

2.3.1 函数

2.3.2 循环

2.3.3 控制语句

2.3.4 全局变量

2.3.5 字串初始化

第3章 静态分析技术

3.1 文件类型分析

3.1.1 FileInfo工具

3.1.2 PEiD工具

3.2 资源

3.2.1 资源黑客的使用

3.2.2 eXeScope的使用

3.3 W32DASM使用介绍

3.3.1 准备工作

3.3.2 操作步骤

3.3.3 代码清单的阅读

3.4 IDA PRO使用简介

3.4.1 IDA文件

3.4.2 IDA配置文件

3.4.3 IDA菜单选项配置

3.4.4 打开文件

3.4.5 IDA主窗口界面

3.4.6 注释

3.4.7 交叉参考

3.4.8 查找字符串

3.4.9 参考重命名

3.4.10 标签的用法

3.4.11 进制的转换

3.4.12 手工识别代码和数据

3.4.13 数组(Arrays)

3.4.14 结构体(Structures)

3.4.15 枚举类型(Enumerated Types)

3.4.16 堆栈变量

3.4.17 IDC脚本

3.4.18 FLIRT

3.4.19 插件

3.4.20 输出

3.4.21 小结

3.5 文件编辑工具

3.5.1 Hiew使用

3.5.2 HexWorkshop使用

3.5.3 WinHex使用

3.6 静态分析技术应用实例

3.6.1 解密初步

3.6.2 逆向工程初步

第4章 动态分析技术

4.1 SOFTICE调试器

4.1.1 安装

4.1.2 调试窗口简介

4.1.3 窗口操作

4.1.4 SoftICE配置

4.1.5 SoftICE常用命令简介

4.1.6 SoftICE调试技术

4.1.7 SoftICE的符号调试技术

4.1.8 断点

4.1.9 SoftICE远程调试

4.1.10 IceDump和NticeDump的使用

4.2 TRW2000调试器

4.2.1 安装

4.2.2 配置

4.2.3 输出信息(Export)的装载

4.2.4 TRW2000操作

4.2.5 条件断点

4.2.6 符号调试

4.3 OLLYDBG调试器

4.3.1 OllyDbg界面

4.3.2 基本操作

4.3.3 实例

4.4 常见问题小结

第5章 软件保护技术及其弱点

5.1 序列号保护方式

5.1.1 序列号保护机制

5.1.2 如何攻击序列号保护

5.1.3 字符处理代码分析

5.1.4 注册机制作

5.1.5 浮点数

5.2 警告(NAG)窗口

5.3 时间限制

5.3.1 计时器

5.3.2 时间限制

5.3.3 拆解时间限制保护

5.4 菜单功能限制

5.4.1 相关函数

5.4.2 拆解菜单限制保护

5.5 KEY FILE保护

5.5.1 相关API函数

5.5.2 拆解Key File的一般思路

5.5.3 文件监视工具FileMon

5.5.4 拆解KeyFile保护

5.6 CD-CHECK

5.6.1 相关函数

5.6.2 拆解光盘保护

5.7 只运行一个实例

5.7.1 实现方案

5.7.2 实例

5.8 常用断点设置技巧

5.9 关于软件保护的一般性建议

第6章 加密算法

6.1 单向散列算法

6.1.1 MD5算法

6.1.2 SHA算法

6.1.3 CRC算法

6.2 公开密钥算法

6.2.1 RSA算法

6.2.2 ElGamal算法

6.2.3 DSA算法

6.3 对称算法

6.3.1 BlowFish算法

6.4 其他算法

6.4.1 Base64编码

6.4.2 Crypto API

6.5 小结

第7章 反编译语言

7.1 VISUAL BASIC程序

7.1.1 Visual Basic字符编码方式

7.1.2 VB3和VB4反编译

7.1.3 动态分析VB3和VB4程序

7.1.4 动态分析VB5和VB6程序

7.1.5 SmartCheck调试工具

7.1.6 伪编译(P-code)

7.2 DELPHI/ C++ BUILDER程序

7.2.1 认识Delphi

7.2.2 DeDe反编译器

7.2.3 断点

7.3 JAVA程序

7.3.1 JVM指令系统

7.3.2 JVM寄存器

7.3.3 JVM堆栈结构

7.3.4 JVM碎片回收堆

7.3.5 JVM存储区

7.4 INSTALLSHIELD反编译

7.4.1 安装文件构成

7.4.2 脚本语言反编译

7.4.3 IS解密

第8章 PE文件格式

8.1 PE文件结构

8.1.1 PE的基本概念

8.1.2 DOS插桩程序

8.1.3 PE文件头(IMAGE_NT _HEADERS)

8.1.4 块表(The Section Table)

8.1.5 各种块(Sections)的描述

8.1.6 输入表(Import Table)

8.1.7 绑定输入(Bound Import)

8.1.8 输出表(Export Table)

8.1.9 基址重定位表(Base ReloCation Table)

8.1.10 资源

8.1.11 PE格式小结

8.2 PE编辑工具

8.2.1 LordPE使用简介

8.2.2 PEditor使用简介

第9章 增加PE文件功能

9.1 数据对齐

9.2 增加区块(SECTION)

9.2.1 手工构造区块

9.2.2 工具辅助构造区块

9.3 增加输入函数

9.3.1 手工增加

9.3.2 工具辅助

9.4 增加DLL文件

9.5 窗口函数

9.6 增加菜单功能

9.6.1 扩充WndProc

9.6.2 Exit菜单

9.6.3 Open菜单

9.6.4 Save菜单

9.7 用DLL增加功能

9.7.1 创建DLL文件

9.7.2 调用DLL函数

9.8 修复基址重定位表

9.9 增加输出函数

9.10 扩充输出函数功能

第10章 反跟踪技术

10.1 结构化异常处理

10.1.1 异常列表

10.1.2 SEH异常处理

10.1.3 异常信息

10.1.4 系统异常调试程序

10.1.5 异常处理回调函数

10.2 反调试技术

10.3 花指令

10.4 反-反调试技术

10.4.1 SuperBPM

10.4.2 FrogsICE

10.4.3 在Windows 2000/XP下隐藏SoftICE

10.5 反跟踪实例

10.5.1 Anti-SoftICE

10.5.2 Anti-Spy

10.5.3 Anti-DeDe

第11章 加壳与脱壳

11.1 认识壳

11.1.1 壳的概念

11.1.2 壳的加载过程

11.2 加壳工具

11.2.1 ASPack

11.2.2 UPX

11.2.3 PECompact

11.2.4 ASProtect

11.2.5 tElock

11.2.6 幻影(DBPE)

11.3 专用脱壳软件

11.3.1 ASPack

11.3.2 UPX

11.3.3 ASProtect

11.4 通用脱壳软件

11.4.1 ProcDump使用简介

11.4.2 File Scanner使用简介

11.5 手动脱壳

11.5.1 查找入口点

11.5.2 抓取内存映像文件

11.5.3 重建输入表

11.5.4 ImportREC使用指南

11.5.5 Revirgin使用指南

11.5.6 重建可编辑资源

11.6 压缩保护的壳

11.6.1 ASPack的壳

11.6.2 PECompact的壳

11.6.3 PE-PaCK的壳

11.6.4 Petite的壳

11.7 加密保护的壳

11.7.1 ASProtect加密保护

11.7.2 tElock加密保护

11.8 DLL文件

11.8.1 ASPack的壳

11.8.2 PECompact的壳

11.8.3 UPX的壳

11.8.4 ASProtect的壳

11.8.5 tElock的壳

11.9 脱壳小结

第12章 补丁技术

12.1 补丁原理

12.1.1 文件补丁

12.1.2 内存补丁

12.2 补丁工具

12.2.1 文件补丁工具

12.2.2 内存补丁工具

12.3 SMC补丁技术

12.3.1 单层SMC技术

12.3.2 多层SMC技术

12.3.3 SMC函数

第13章 商用软件保护技术

13.1 软件狗(DONGLES)

13.1.1 软件狗介绍

13.1.2 软件狗厂商

13.1.3 软件狗的弱点

13.2 VBOX保护技术

13.2.1 Vbox 4.03版本

13.2.2 Vbox 4.2版本

13.2.3 Vbox 4.3版本

13.3 SALESAGENT保护技术

13.3.1 从“现在购买(BUY NOW)”入手

13.3.2 暴力去除SalesAgent的保护

13.4 SOFTSENTRY保护技术

13.5 TIMELOCK保护技术

13.6 FLEXLM保护

13.6.1 License文件格式

13.6.2 设置环境变量

13.6.3 Flexlm Server

13.6.4 FlexGen工具用法

13.6.5 利用FlexLm SDK解密

附录A 浮点指令

附录B SOFTICE指令手册

附录C TRW2000指令手册

参考文献