标题：IDA Pro权威指南
基本信息
  IDA Pro权威指南作者：伊格尔(Chris Eagle)(作者), 石华耀(译者), 段桂菊(译者)
出版社:人民邮电出版社; 第1版 (2010年3月1日) 
丛书名: 图灵程序设计丛书 
平装:445页 
正文语种:简体中文 
开本:16 
ISBN:9787115222633 
条形码:9787115222633 
商品尺寸: 23.8 x 18.2 x 2.6 cm 
商品重量: 762 g
内容简介
《IDA Pro权威指南》内容简介：IDA Pro（交互式反汇编器专业版）是应用最广泛的静态反汇编工具，在IT领域有着举足轻重的地位，但其文档资料一直都不够完善。在IDA Pr0创建者Ilfak的协助下问世的这《IDA Pro权威指南》，完美地弥补了这一缺憾。C卜¨1s的理论被业界公认为是权威且令人信服的。而他的模拟器也是公开发布的IDA插件中最棒的一款。
《IDA Pro权威指南》首先描述反汇编理论、逆向工程的基本信息}111DA Pro的背景知识，然后系统地介绍IDA的基本布局和功能、复杂数据结构的处理、交叉引用与绘图功能，以及如何在非Wiridows平台上运行IDA。书中由浅入深地介绍了IDA的配置、F LlRT技术、IDA类型库的扩展以及一些IDA限制。难得的是。《IDA Pro权威指南》还探讨了IDA的可扩展性。涉及IDA脚本、SDK、插件、加载器模块和处理器模块。最后阐述了IDA在逆向工程中的实际用法，讨论了各种编译器的区别、模糊代码分析和漏洞分析、IDA插件以及IDA调试器。 
编辑推荐
《IDA Pro权威指南》：IDA Pro发行者亲自作序推荐，Amazon全五星畅销图书，引领你步入IDA Pro和逆向工程的殿堂 。 
媒体推荐
“它是迄今为止最全面、最准确、最棒的IDA Pro图书。” 
——Pierre Vandevenne，DataRescue公司的所有人和CEO 
“我家里有好几本IDA Pro方面的图书，但当我遇到Chris Eagle的这本佳作时，如获至宝，其他所有书都可以抛弃了。” 
——Amazon读者评论 
作者简介
Chris EagIe，美国海军研究生院计算机系副主任、高级讲师，著有Gray，4at Hacking，在多种全球性安全会议中发表过演讲。 
目录
第一部分　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