《IDA Pro权威指南》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:ChrisEagle编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2010
  • ISBN:9787115222633
  • 页数:446 页
图书介绍:本书一共分为5个部分,由浅入深,以IDA Pro的基本原理和使用开篇,紧接着讲解IDA Pro的基本使用和高级使用、扩展功能和实际应用,一方面让用户对IDA Pro有更深层次的了解,另外一方面向读者展示IDA Pro在现实中的应用。

第一部分 IDA简介第1章 反汇编简介 2

1.1 反汇编理论 2

1.2 何为反汇编 3

1.3 为何反汇编 3

1.3.1 分析恶意软件 4

1.3.2 漏洞分析 4

1.3.3 软件互操作性 4

1.3.4 编译器验证 4

1.3.5 显示调试信息 5

1.4 如何反汇编 5

1.4.1 基本的反汇编算法 5

1.4.2 线性扫描反汇编 6

1.4.3 递归下降反汇编 7

1.5 小结 10

第2章 逆向与反汇编工具 11

2.1 分类工具 11

2.1.1 file 11

2.1.2 PE Tools 13

2.1.3 PEiD 14

2.2 摘要工具 14

2.2.1 nm 15

2.2.2 ldd 16

2.2.3 objdump 17

2.2.4 otool 18

2.2.5 dumpbin 18

2.2.6 c++filt 19

2.3 深度检测工具 20

2.3.1 strings 20

2.3.2 反汇编器 21

2.4 小结 22

第3章 IDA Pro背景知识 23

3.1 Hex-Rays公司的反盗版策略 23

3.2 获取IDA Pro 24

3.2.1 IDA版本 24

3.2.2 IDA许可证 24

3.2.3 购买IDA 25

3.2.4 升级IDA 25

3.3 IDA支持资源 25

3.4 安装IDA 26

3.4.1 Windows安装 26

3.4.2 OS X和Linux安装 27

3.4.3 IDA目录的结构 28

3.5 IDA用户界面 29

3.6 小结 29

第二部分 IDA基本用法第4章 IDA入门 32

4.1 启动IDA 32

4.1.1 IDA文件加载 34

4.1.2 使用二进制文件加载器 35

4.2 IDA数据库文件 37

4.2.1 创建IDA数据库 38

4.2.2 关闭IDA数据库 38

4.2.3 重新打开数据库 39

4.3 IDA桌面简介 40

4.4 初始分析时的桌面行为 42

4.5 IDA桌面提示和技巧 43

4.6 报告bug 44

4.7 小结 44

第5章 IDA数据显示窗口 45

5.1 IDA主要的数据显示窗口 45

5.1.1 反汇编窗口 45

5.1.2 Names窗口 50

5.1.3 消息窗口 51

5.1.4 Strings窗口 52

5.2 次要的IDA显示窗口 53

5.2.1 十六进制窗口 53

5.2.2 导出窗口 54

5.2.3 导入窗口 54

5.2.4 函数窗口 55

5.2.5 结构体窗口 55

5.2.6 枚举窗口 56

5.3 其他IDA显示窗口 56

5.3.1 段窗口 56

5.3.2 签名窗口 57

5.3.3 类型库窗口 58

5.3.4 函数调用窗口 58

5.3.5 问题窗口 59

5.4 小结 59

第6章 反汇编导航 60

6.1 基本IDA导航 60

6.1.1 双击导航 60

6.1.2 跳转到地址 62

6.1.3 导航历史记录 62

6.2 栈帧 63

6.2.1 调用约定 64

6.2.2 局部变量布局 67

6.2.3 栈帧示例 67

6.2.4 IDA栈视图 70

6.3 搜索数据库 74

6.3.1 文本搜索 75

6.3.2 二进制搜索 75

6.4 小结 76

第7章 反汇编操作 77

7.1 名称与命名 77

7.1.1 参数和局部变量 77

7.1.2 已命名的位置 79

7.1.3 寄存器名称 80

7.2 IDA中的注释 80

7.2.1 常规注释 82

7.2.2 可重复注释 82

7.2.3 在前注释和在后注释 82

7.2.4 函数注释 82

7.3 基本代码转换 83

7.3.1 代码显示选项 83

7.3.2 格式化指令操作数 85

7.3.3 操纵函数 86

7.3.4 数据与代码互相转换 91

7.4 基本数据转换 91

7.4.1 指定数据大小 92

7.4.2 处理字符串 93

7.4.3 指定数组 94

7.5 小结 96

第8章 数据类型与数据结构 97

8.1 识别数据结构的使用 98

8.1.1 数组成员访问 98

8.1.2 结构体成员访问 102

8.2 创建IDA结构体 107

8.3 使用结构体模板 111

8.4 导入新的结构体 114

8.4.1 解析C结构体声明 114

8.4.2 解析C头文件 115

8.5 使用标准结构体 115

8.6 IDA TIL文件 118

8.6.1 加载新的TIL文件 118

8.6.2 共享TIL文件 118

8.7 C++逆向工程基础 119

8.7.1 this指针 119

8.7.2 虚函数和虚表 120

8.7.3 对象生命周期 122

8.7.4 名称改编 124

8.7.5 运行时类型识别 125

8.7.6 继承关系 126

8.7.7 C++逆向工程参考文献 127

8.8 小结 127

第9章 交叉引用与绘图功能 128

9.1 交叉引用 128

9.1.1 代码交叉引用 129

9.1.2 数据交叉引用 131

9.1.3 交叉引用列表 133

9.1.4 函数调用 134

9.2 IDA绘图 135

9.2.1 IDA的遗留绘图功能 135

9.2.2 IDA的集成图形视图 141

9.3 小结 143

第10章 IDA的多种面孔 144

10.1 控制台模式IDA 144

10.1.1 控制台模式的共同特性 144

10.1.2 Windows控制台 145

10.1.3 Linux控制台 146

10.1.4 OS X控制台 148

10.2 使用IDA的批量模式 150

10.3 非Windows平台上的GUI IDA 151

10.4 小结 152

第三部分 IDA高级应用第11章 定制IDA 154

11.1 配置文件 154

11.1.1 主配置文件:ida.cfg 154

11.1.2 GUI配置文件:idagui.cfg 155

11.1.3 控制台配置文件:idatui.cfg 157

11.2 其他IDA配置选项 158

11.2.1 IDA颜色 159

11.2.2 定制IDA工具栏 159

11.3 小结 161

第12章 使用FLIRT签名来识别库 162

12.1 快速库识别和鉴定技术 162

12.2 应用FLIRT签名 163

12.3 创建FLIRT签名文件 166

12.3.1 创建签名概述 166

12.3.2 识别和获取静态库 167

12.3.3 创建模式文件 168

12.3.4 创建签名文件 169

12.3.5 启动签名 171

12.4 小结 172

第13章 扩展IDA的知识 173

13.1 扩充函数信息 173

13.1.1 IDS文件 175

13.1.2 创建IDS文件 176

13.2 使用loadint扩充预定义注释 178

13.3 小结 179

第14章 修补二进制文件及其他IDA限制 180

14.1 隐藏的补丁程序菜单 180

14.1.1 更改数据库字节 181

14.1.2 更改数据库中的字 181

14.1.3 使用“汇编”对话框 182

14.2 IDA输出文件与补丁生成 183

14.2.1 IDA生成的MAP文件 183

14.2.2 IDA生成的ASM文件 184

14.2.3 IDA生成的INC文件 184

14.2.4 IDA生成的LST文件 185

14.2.5 IDA生成的EXE文件 185

14.2.6 IDA生成的DIF文件 185

14.2.7 IDA生成的HTML文件 186

14.3 小结 186

第四部分 扩展IDA的功能第15章 编写IDC脚本 188

15.1 执行脚本的基础知识 188

15.2 IDC语言 189

15.2.1 IDC变量 190

15.2.2 IDC表达式 190

15.2.3 IDC语句 190

15.2.4 IDC函数 191

15.2.5 IDC程序 192

15.2.6 IDC错误处理 192

15.2.7 IDC永久数据存储 193

15.3 关联IDC脚本与热键 194

15.4 有用的IDC函数 195

15.4.1 读取和修改数据的函数 196

15.4.2 用户交互函数 196

15.4.3 字符串操纵函数 197

15.4.4 文件输入/输出函数 197

15.4.5 操纵数据库名称 198

15.4.6 处理函数的函数 199

15.4.7 代码交叉引用函数 199

15.4.8 数据交叉引用函数 200

15.4.9 数据库操纵函数 200

15.4.10 数据库搜索函数 201

15.4.11 反汇编行组件 201

15.5 IDC脚本示例 202

15.5.1 枚举函数 202

15.5.2 枚举指令 202

15.5.3 枚举交叉引用 203

15.5.4 枚举导出的函数 205

15.5.5 查找和标记函数参数 206

15.5.6 模拟汇编语言行为 208

15.6 小结 209

第16章 IDA软件开发工具包 211

16.1 SDK简介 212

16.1.1 安装SDK 212

16.1.2 SDK的布局 212

16.1.3 配置构建环境 213

16.2 IDA应用编程接口 214

16.2.1 头文件概述 214

16.2.2 网络节点 217

16.2.3 有用的SDK数据类型 223

16.2.4 常用的SDK函数 224

16.2.5 IDA API迭代技巧 229

16.3 小结 232

第17章 IDA插件体系结构 233

17.1 编写插件 233

17.1.1 插件生命周期 235

17.1.2 插件初始化 236

17.1.3 事件通知 237

17.1.4 插件执行 238

17.2 构建插件 239

17.3 插件安装 243

17.4 插件配置 244

17.5 扩展IDC 244

17.6 插件用户界面选项 247

17.7 小结 254

第18章 二进制文件与IDA加载器模块 255

18.1 未知文件分析 256

18.2 手动加载一个Windows PE文件 256

18.3 IDA加载器模块 263

18.4 编写IDA加载器 263

18.4.1 “傻瓜式”加载器 265

18.4.2 构建IDA加载器模块 269

18.4.3 IDA pcap加载器 269

18.5 其他加载器策略 274

18.6 小结 275

第19章 IDA处理器模块 276

19.1 Python字节码 277

19.2 Python解释器 277

19.3 编写处理器模块 277

19.3.1 processor_t结构体 278

19.3.2 LPH结构体的基本初始化 278

19.3.3 分析器 282

19.3.4 模拟器 286

19.3.5 输出器 288

19.3.6 处理器通知 293

19.3.7 其他processor_t成员 294

19.4 构建处理器模块 296

19.5 定制现有的处理器 299

19.6 处理器模块体系结构 301

19.7 小结 302

第五部分 实际应用第20章 编译器变体 304

20.1 跳转表与分支语句 304

20.2 RTTI实现 308

20.3 定位main函数 308

20.4 调试版与发行版二进制文件 315

20.5 其他调用约定 317

20.6 小结 317

第21章 模糊代码分析 319

21.1 反静态分析技巧 319

21.1.1 反汇编去同步 319

21.1.2 动态计算目标地址 322

21.1.3 导入的函数模糊 327

21.1.4 有针对性地攻击分析工具 331

21.2 反动态分析技巧 331

21.2.1 检测虚拟化 331

21.2.2 检测“检测工具” 333

21.2.3 检测调试器 333

21.2.4 防止调试 334

21.3 使用IDA对二进制文件进行“静态去模糊” 335

21.3.1 面向脚本的去模糊 335

21.3.2 面向模拟的去模糊 339

21.4 小结 349

第22章 漏洞分析 350

22.1 使用IDA发现新的漏洞 351

22.2 使用IDA在事后发现漏洞 356

22.3 IDA与破解程序开发过程 359

22.3.1 栈帧细目 360

22.3.2 定位指令序列 362

22.3.3 查找有用的虚拟地址 363

22.4 分析shellcode 364

22.5 小结 366

第23章 实用IDA插件 367

23.1 Hex-Rays 367

23.2 IDAPython 368

23.3 IDARub 371

23.4 IDA Sync 371

23.5 collabREate 374

23.6 ida-x86emu 377

23.7 mIDA 377

23.8 小结 379

第六部分 IDA调试器第24章 IDA调试器 382

24.1 启动调试器 382

24.2 调试器的基本显示 384

24.3 进程控制 387

24.3.1 断点 388

24.3.2 跟踪 390

24.3.3 栈跟踪 393

24.3.4 监视 393

24.4 调试器任务自动化 393

24.4.1 使用IDC为调试器操作编写脚本 394

24.4.2 使用IDA插件实现调试器操作自动化 398

24.5 小结 400

第25章 反汇编器/调试器集成 401

25.1 背景知识 401

25.2 IDA数据库与IDA调试器 402

25.3 调试模糊代码 404

25.3.1 简单的解密和解压循环 404

25.3.2 导入表重建 407

25.3.3 隐藏调试器 410

25.3.4 处理异常 414

25.4 小结 418

第26章 Linux、OS X平台的IDA和远程调试 419

26.1 控制台模式的调试 419

26.2 使用IDA进行远程调试 420

26.2.1 远程调试中的异常处理 422

26.2.2 在远程调试中使用脚本和插件 423

26.3 小结 423

附录A 使用IDA 4.9免费版 424

附录B IDC/SDK交叉引用 426

附录C IDA 5.3的新功能 444