图书介绍
REVERSING:逆向工程揭密PDF|Epub|txt|kindle电子书版本网盘下载
![REVERSING:逆向工程揭密](https://www.shukui.net/cover/36/31725183.jpg)
- (美)ELDAD EILAM著 著
- 出版社: 北京:电子工业出版社
- ISBN:7121049953
- 出版时间:2007
- 标注页数:598页
- 文件大小:44MB
- 文件页数:620页
- 主题词:工业产品-计算机辅助设计
PDF下载
下载说明
REVERSING:逆向工程揭密PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1部分 逆向101
第1章 基础3
1.1 什么是逆向工程3
1.2 软件逆向工程:逆向4
1.3 逆向应用4
1.3.1 与安全相关的逆向5
1.3.2 软件开发中的逆向8
1.4 底层软件9
1.4.1 汇编语言10
1.4.2 编译器11
1.4.3 虚拟机和字节码12
1.4.4 操作系统13
1.5 逆向过程13
1.5.1 系统级逆向14
1.5.2 代码级逆向14
1.6 工具14
1.6.1 系统监控工具15
1.6.2 反汇编器15
1.6.3 调试器15
1.6.4 反编译器16
1.7 逆向合法吗?17
1.7.1 互操作性17
1.7.2 竞争18
1.7.3 版权法19
1.7.4 商业机密和专利权20
1.7.5 美国数字千禧版权法20
1.7.6 DMCA案例22
1.7.7 许可证协议23
1.8 代码范例与工具23
1.9 结论23
第2章 底层软件25
2.1 高阶视角26
2.1.1 程序结构26
2.1.2 数据管理29
2.1.3 控制流32
2.1.4 高级语言33
2.2 低阶视角37
2.2.1 底层数据管理37
2.2.2 控制流43
2.3 汇编语言10144
2.3.1 寄存器44
2.3.2 标志位46
2.3.3 指令格式47
2.3.4 基本指令48
2.3.5 范例52
2.4 编译器和编译入门53
2.4.1 定义编译器54
2.4.2 编译器架构55
2.4.3 列表文件58
2.4.4 专用编译器59
2.5 执行环境60
2.5.1 软件执行环境(虚拟机)60
2.5.2 现代处理器的硬件执行环境63
2.6 结论68
第3章 Windows基础知识69
3.1 组件及基本架构70
3.1.1 简要回顾70
3.1.2 特征70
3.1.3 支持的硬件71
3.2 内存管理71
3.2.1 虚拟内存和分页72
3.2.2 工作集74
3.2.3 内核内存和用户内存74
3.2.4 内核内存空间75
3.2.5 区段对象77
3.2.6 VAD树78
3.2.7 用户模式的内存分配78
3.2.8 内存管理API79
3.3 对象与句柄80
命名对象81
3.4 进程与线程83
3.4.1 进程84
3.4.2 线程84
3.4.3 运行状态切换85
3.4.4 同步对象86
3.4.5 进程初始化顺序87
3.5 应用程序编程接口88
3.5.1 Win32 API88
3.5.2 本地API90
3.5.3 系统调用机制91
3.6 可执行文件格式93
3.6.1 基本概念93
3.6.2 映像区段(Image Sections)95
3.6.3 区段对齐(Section Alignment)95
3.6.4 动态链接库96
3.6.5 头部97
3.6.6 导入与导出99
3.6.7 目录99
3.7 输入与输出103
3.7.1 I/O系统103
3.7.2 Win32子系统104
3.8 结构化异常处理105
3.9 结论107
第4章 逆向工具109
4.1 不同的逆向方法110
4.1.1 离线代码分析110
4.1.2 现场代码分析110
4.2 反汇编器——ILDasm110
4.3 调试器116
4.3.1 用户模式调试器118
4.3.2 内核模式调试器122
4.4 反编译器129
4.5 系统监控工具129
4.6 修补工具131
Hex Workshop131
4.7 其他类型的逆向工具133
可执行程序转储工具133
4.8 结论138
第2部分 应用逆向141
第5章 未公开的技术141
5.1 逆向和互操作性142
5.2 基本原则142
5.3 定位未公开的API函数143
我们要找什么?144
5.4 案例研究:NTDLL.DLL中的Generic Table API145
5.4.1 RtlInitializeGenericTable146
5.4.2 RtlNumberGenericTableElements151
5.4.3 RtlIsGenericTableEmpty152
5.4.4 RtlGetElementGenericTable153
5.4.5 RtlInsertElementGenericTable168
5.4.6 RtlLookupElementGenericTable188
5.4.7 RtlDeleteElementGenericTable193
5.4.8 思路整理194
5.5 结论196
第6章 破译文件格式199
6.1 Cryptex200
6.2 使用Cryptex201
6.3 逆向Cryptex202
6.4 口令校验过程207
6.4.1 捕获“Bad Password”消息207
6.4.2 口令变换算法210
6.4.3 对口令作hash处理213
6.5 目录结构218
6.5.1 分析目录处理代码218
6.5.2 分析文件项223
6.6 转储目录结构227
6.7 文件提取过程228
6.7.1 扫描文件列表234
6.7.2 解密文件235
6.7.3 浮点运算代码236
6.7.4 解密循环238
6.7.5 验证Hash值239
6.8 要点总结239
6.9 进一步讨论241
6.10 结论242
第7章 审查程序的二进制码243
7.1 定义问题243
7.2 漏洞245
7.2.1 堆栈溢出245
7.2.2 堆溢出255
7.2.3 字符串过滤程序256
7.2.4 整数溢出256
7.2.5 类型转换错误260
7.3 案例研究:IIS索引服务漏洞262
7.3.1 CVariableSet∷AddExtensionControlBlock263
7.3.2 DecodeURLEscapes267
7.4 结论271
第8章 逆向恶意软件273
8.1 恶意软件的分类274
8.1.1 病毒274
8.1.2 蠕虫274
8.1.3 特洛伊木马275
8.1.4 后门276
8.1.5 移动代码276
8.1.6 广告软件和间谍软件276
8.2 粘人的软件(Sticky Software)277
8.3 未来的恶意软件278
8.3.1 盗取信息的蠕虫278
8.3.2 BIOS/固件恶意软件279
8.4 恶意软件的使用280
8.5 恶意软件的弱点281
8.6 多态282
8.7 变形283
8.8 建立安全的环境285
8.9 Backdoor.Hacarmy.D285
8.9.1 脱壳可执行文件286
8.9.2 初次印象290
8.9.3 初次安装291
8.9.4 初始化通信设置294
8.9.5 连接到服务器296
8.9.6 连接信道298
8.9.7 与后门进行通信299
8.9.8 运行SOCK4服务器303
8.9.9 清理犯罪现场303
8.10 The Backdoor.Hacarmy.D:命令参考304
8.11 结论306
第3部分 破解309
第9章 盗版与拷贝保护309
9.1 世界中的版权309
9.2 社会方面310
9.3 软件盗版310
9.3.1 明确问题311
9.3.2 群破解312
9.3.3 需求313
9.3.4 理论上不可破解的模型314
9.4 各种类型的保护314
9.4.1 基于介质的保护314
9.4.2 序列号315
9.4.3 质询响应和在线激活315
9.4.4 基于硬件的保护316
9.4.5 软件即服务317
9.5 高级保护的概念318
加密处理器318
9.6 数字版权管理319
数字版权管理模型320
9.7 加水印321
9.8 可信计算322
9.9 破解拷贝保护技术324
9.10 结论324
第10章 反逆向技术327
10.1 为什么要反逆向?327
10.2 反逆向的基本方法328
10.3 消除符号信息329
10.4 代码加密330
10.5 活跃的反调试器技术331
10.5.1 调试器基础331
10.5.2 API函数IsDebuggerPresent332
10.5.3 SystemKernelDebugger Information333
10.5.4 用单步中断检测SoftICE334
10.5.5 陷阱标志335
10.5.6 代码校验和335
10.6 迷惑反汇编器336
10.6.1 线性扫描反汇编器337
10.6.2 递归遍历反汇编器338
10.6.3 应用343
10.7 代码混淆344
10.8 控制流变换346
10.8.1 暗晦谓词346
10.8.2 迷惑反编译器348
10.8.3 表译码348
10.8.4 内联和外联353
10.8.5 交叉代码354
10.8.6 次序变换355
10.9 数据变换355
10.9.1 修改变量编码355
10.9.2 重构数组356
10.10 结论356
第11章 突破保护357
11.1 修补程序(Patching)358
11.2 生成密钥364
11.3 取密钥生成算法365
11.4 高级破解:Defender370
11.4.1 逆向Defender的初始化程序377
11.4.2 分析解密后的代码387
11.4.3 SoftICE的消失396
11.4.4 逆向分析第二个线程396
11.4.5 击败“杀手(Killer)”线程399
11.4.6 加载KERNEL32.DLL400
11.4.7 再加密函数401
11.4.8 回到入口点402
11.4.9 解析程序的参数404
11.4.10 处理用户名406
11.4.11 验证用户信息407
11.4.12 解密代码409
11.4.13 暴力破解Defender409
11.5 Defender中的保护技术415
11.5.1 局部化的函数级加密415
11.5.2 混淆应用程序与操作系统之间的接口416
11.5.3 处理器时间戳验证线程417
11.5.4 在运行时生成解密密钥418
11.5.5 重度内联419
11.6 结论419
第4部分 反汇编之外423
第12章 逆向.NET423
12.1 基本原则424
12.2 .NET基础426
12.2.1 托管代码426
12.2.2 .NET程序设计语言428
12.2.3 通用类型系统428
12.3 中间语言429
12.3.1 求值堆栈430
12.3.2 活动记录430
12.3.3 IL指令430
12.3.4 代码实例433
12.4 反编译器443
12.5 混淆器444
12.5.1 重命名符号444
12.5.2 控制流混淆444
12.5.3 中断反编译与中断反汇编444
12.6 逆向混淆代码445
12.6.1 XenoCode混淆器446
12.6.2 DotFuscator by Preemptive Solutions448
12.6.3 Remotesoft混淆器与连接器451
12.6.4 Remotesoft Protector452
12.6.5 预编译的汇编程序453
12.6.6 加密的汇编程序453
12.7 结论455
第13章 反编译457
13.1 本地代码的反编译:是一个解决不了的问题吗?457
13.2 典型的反编译器架构459
13.3 中间表示459
13.3.1 表达式和表达式树461
13.3.2 控制流图462
13.4 前端463
13.4.1 语义分析463
13.4.2 生成控制流图464
13.5 代码分析466
13.5.1 数据流分析466
13.5.2 类型分析472
13.5.3 控制流分析475
13.5.4 查找库函数475
13.6 反编译器后端476
13.7 Real-World IA-32反编译477
13.8 结论477
附录A 揭密代码结构479
附录B 理解编译后的算术运算519
附录C 破译程序数据537
索引561