逆向分析实战 内容简介
本书的主要内容为:数据的存储及表示形式、汇编语言入门、熟悉调试工具OllyDbg、PE工具详解、PE文件格式实例(包括加壳与脱壳工具的使用)、十六进制编辑器与反编译工具、IDA与逆向、逆向工具原理实现等。
本书可以作为程序员、安全技术的研究人员、安全技术爱好者阅读。
逆向分析实战 目录
第 1章 数据的存储及表示形式 1
1.1 进制及进制的转换 1
1.1.1 现实生活中的进制与计算机的二进制 1
1.1.2 进制的定义 2
1.1.3 进制的转换 2
1.2 数据宽度、字节序和ASCII码 4
1.2.1 数据的宽度 4
1.2.2 数值的表示范围 4
1.2.3 字节序 5
1.2.4 ASCII码 6
1.3 在OD中查看数据 6
1.4 编程判断主机字符序 11
1.4.1 字节序相关函数 11
1.4.2 编程判断主机字节序 11
1.5 总结 13
第 2章 汇编语言入门 14
2.1 x86汇编语言介绍 14
2.1.1 寄存器 15
2.1.2 在OD中认识寄存器 19
2.2 常用汇编指令集 20
2.2.1 指令介绍 20
2.2.2 常用指令介绍 21
2.3 寻址方式 36
2.4 总结 37
第3章 熟悉调试工具OllyDbg 39
3.1 认识OD调试环境 39
3.1.1 启动调试 39
3.1.2 熟悉OD窗口 42
3.2 OD中的断点及跟踪功能 46
3.2.1 OD中设置断点的方法 47
3.2.2 OD中跟踪代码的介绍 52
3.3 OD中的查找功能和编辑功能 53
3.3.1 OD的搜索功能 53
3.3.2 OD修改的编辑功能 55
3.4 OD中的插件功能 56
3.4.1 OD常用插件介绍 56
3.4.2 OD插件脚本编写 58
3.4.3 OD插件的开发 59
3.5 总结 63
第4章 PE工具详解 64
4.1 常用PE工具介绍 64
4.1.1 PE工具 64
4.1.2 Stud_PE介绍 65
4.1.3 PEiD介绍 66
4.1.4 LordPE介绍 66
4.2 PE文件格式详解 67
4.2.1 PE文件结构全貌介绍 68
4.2.2 详解PE文件结构 70
4.2.3 PE结构的三种地址 84
4.3 数据目录相关结构详解 90
4.3.1 导入表 91
4.3.2 导出表 104
4.3.3 重定位表 110
4.4 总结 118
第5章 PE文件格式实例 119
5.1 手写PE文件 119
5.1.1 手写PE文件的准备工作 119
5.1.2 用十六进制字节完成PE文件 120
5.2 手工对PE文件进行减肥 132
5.2.1 修改压缩节区 132
5.2.2 节表合并 135
5.2.3 结构重叠 140
5.2.4 小结 148
5.3 PE结构相关工具 148
5.3.1 增加节区 148
5.3.2 资源编辑 149
5.4 加壳与脱壳工具的使用 154
5.4.1 什么是壳 154
5.4.2 简单壳的原理 155
5.4.3 加壳工具与脱壳工具的使用 166
5.5 PE32+简介 180
5.5.1 文件头 180
5.5.2 可选头 181
5.6 总结 182
第6章 十六进制编辑器与反编译工具 183
6.1 C32Asm 183
6.1.1 文件的打开方式 183
6.1.2 反汇编模式 185
6.1.3 十六进制模式 189
6.2 WinHex 193
6.2.1 内存搜索功能 194
6.2.2 使用模板解析数据 196
6.2.3 完成一个简单的模板 198
6.3 其他十六进制编辑器 200
6.3.1 UltraEdit简介 200
6.3.2 010Editor简介 201
6.4 反编译工具介绍 202
6.4.1 DeDe反编译工具 202
6.4.2 VB反编译工具 206
6.4.3 .NET反编译工具 208
6.4.4 Java反编译工具 211
6.5 总结 211
第7章 IDA与逆向 213
7.1 IDA工具介绍 213
7.1.1 IDA的启动与关闭 213
7.1.2 IDA常用界面介绍 216
7.1.3 IDA的脚本功能 228
7.2 C语言代码逆向基础 231
7.2.1 函数的识别 232
7.2.2 if…else…结构分析 242
7.2.3 switch结构分析 244
7.2.4 循环结构分析 247
7.3 总结 252
第8章 逆向工具原理实现 253
8.1 PE工具的开发 253
8.1.1 GetProcAddress函数的使用 253
8.1.2 GetProcAddress函数的实现 254
8.2 调试工具的开发 238
8.2.1 常见的三种断点 259
8.2.2 调试API函数及相关结构体介绍 262
8.2.3 打造一个密码显示器 273
8.3 总结 277
参考文献 278
逆向分析实战 精彩文摘
了解进制的概念及进制的转换是学习逆向的基础,因为计算机使用的进制是二进制,它又不同于我们现实生活中使用的十进制,因此我们必须学习不同的进制及进制之间的转换。
1.1.1 现实生活中的进制与计算机的二进制
我们在现实生活中会接触到多种多样的进制,通常见到的有十进制、十二进制和二十四进制等。下面分别对这几种进制进行举例说明。
十进制是每个人从上学就开始接触和学习的进制表示方法。所谓的十进制,就是逢十进一,最简单的例子就是 9+1=10。这个无需过多解释。
十二进制也是我们日常生活中常见的表示方法。所谓的十二进制,就是逢十二进一,例如 12 个月为 1 年,13 个月就是 1 年 1 个月。
二十四进制也是我们日常生活中常见的表示方法。所谓的二十四进制,就是逢二十四进一,例如 24 小时为 1 天,25 小时就是 1 天 1 小时。
介绍了以上现实生活中的例子后,我们再来说说计算机中的二进制。根据前面各种进制的解释,我们可以想到,二进制就是逢二进一。这里举个不太恰当的例子,例如 2 斤就是 1 公斤。
→→→→→→→→→→→→→→→→→→→→查找获取
评论