![]() 作者:Chris Eagle 出版社: 人民邮电出版社 原作名: The IDA Pro Book: The Unofficial Guide to the World's Most Popular Disassembler 译者:石华耀/段桂菊 出版年: 2012-2 页数: 508 定价: 89.00元 装帧: 平装 ISBN: 9787115273680 内容简介 · · · · · ·《IDA Pro权威指南(第2版)》共分为六部分,首先介绍了反汇编与逆向工程的基本信息和IDAPro的背景知识,接着讨论了IDAPro的基本用法和高级用法,然后讲解了其高扩展性及其在安全领域的实际应用,最后介绍了IDA的内置调试器(包括Bochs调试器),一方面让用户对IDAPro有全面深入的了解,另一方面让读者掌握IDAPro在现实中的应用。相比上一版,这一版以IDA6.0为基础,介绍了它的新的、基于Qt的图形用户界面,以及IDAPython插件。 作者简介 · · · · · ·Chris Eagle是美国加利福尼亚州蒙特雷海军研究生院计算机科学系高级讲师。他设计了很多IDA插件,还与人合著了Gray Hat Hacking一书。他应邀在Balckhat、Defcon、Toorcon和Shmoocon等众多安全会议上发表过演讲。 目录 · · · · · ·第一部分 IDA 简介第1 章 反汇编简介 2 1.1 反汇编理论 2 1.2 何为反汇编 3 1.3 为何反汇编 3 1.3.1 分析恶意软件 4 · · · · · ·() 第一部分 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 18 2.2.4 otool 18 2.2.5 dumpbin 19 2.2.6 c++filt 19 2.3 深度检测工具 20 2.3.1 strings 20 2.3.2 反汇编器 22 2.4 小结 23 第3 章 IDA Pro 背景知识 24 3.1 Hex-Rays 公司的反盗版策略 24 3.2 获取IDA Pro 25 3.2.1 IDA 版本 25 3.2.2 IDA 许可证 25 3.2.3 购买IDA 26 3.2.4 升级IDA 26 3.3 IDA 支持资源 26 3.4 安装IDA 27 3.4.1 Windows 安装 28 3.4.2 OS X 和Linux 安装 28 3.4.3 IDA 与SELinux 29 3.4.4 32 位IDA 与64 位IDA 29 3.4.5 IDA 目录的结构 30 3.5 IDA 用户界面 30 3.6 小结 31 第二部分 IDA 基本用法 第4 章 IDA 入门 34 4.1 启动IDA 34 4.1.1 IDA 文件加载 35 4.1.2 使用二进制文件加载器 37 4.2 IDA 数据库文件 38 4.2.1 创建IDA 数据库 39 4.2.2 关闭IDA 数据库 40 4.2.3 重新打开数据库 41 4.3 IDA 桌面简介 42 4.4 初始分析时的桌面行为 44 4.5 IDA 桌面提示和技巧 45 4.6 报告bug 45 4.7 小结 46 第5 章 IDA 数据显示窗口 47 5.1 IDA 主要的数据显示窗口 47 5.1.1 反汇编窗口 47 5.1.2 函数窗口 52 5.1.3 输出窗口 52 5.2 次要的IDA 显示窗口 52 5.2.1 十六进制窗口 52 5.2.2 导出窗口 53 5.2.3 导入窗口 54 5.2.4 结构体窗口 54 5.2.5 枚举窗口 55 5.3 其他IDA 显示窗口 55 5.3.1 Strings 窗口 55 5.3.2 Names 窗口 57 5.3.3 段窗口 58 5.3.4 签名窗口 58 5.3.5 类型库窗口 59 5.3.6 函数调用窗口 59 5.3.7 问题窗口 60 5.4 小结 61 第6 章 反汇编导航 62 6.1 基本IDA 导航 62 6.1.1 双击导航 62 6.1.2 跳转到地址 64 6.1.3 导航历史记录 64 6.2 栈帧 65 6.2.1 调用约定 66 6.2.2 局部变量布局 69 6.2.3 栈帧示例 70 6.2.4 IDA 栈视图 73 6.3 搜索数据库 77 6.3.1 文本搜索 77 6.3.2 二进制搜索 77 6.4 小结 78 第7 章 反汇编操作 79 7.1 名称与命名 79 7.1.1 参数和局部变量 79 7.1.2 已命名的位置 80 7.1.3 寄存器名称 82 7.2 IDA 中的注释 82 7.2.1 常规注释 83 7.2.2 可重复注释 84 7.2.3 在前注释和在后注释 84 7.2.4 函数注释 84 7.3 基本代码转换 85 7.3.1 代码显示选项 85 7.3.2 格式化指令操作数 87 7.3.3 操纵函数 88 7.3.4 数据与代码互相转换 93 7.4 基本数据转换 94 7.4.1 指定数据大小 94 7.4.2 处理字符串 95 7.4.3 指定数组 97 7.5 小结 99 第8 章 数据类型与数据结构 100 8.1 识别数据结构的用法 102 8.1.1 数组成员访问 102 8.1.2 结构体成员访问 107 8.2 创建IDA 结构体 112 8.2.1 创建一个新的结构体(或联合) 112 8.2.2 编辑结构体成员 113 8.2.3 用栈帧作为专用结构体 115 8.3 使用结构体模板 115 8.4 导入新的结构体 118 8.4.1 解析C 结构体声明 118 8.4.2 解析C 头文件 119 8.5 使用标准结构体 120 8.6 IDA TIL 文件 123 8.6.1 加载新的TIL 文件 123 8.6.2 共享TIL 文件 123 8.7 C++逆向工程基础 124 8.7.1 this 指针 124 8.7.2 虚函数和虚表 125 8.7.3 对象生命周期 128 8.7.4 名称改编 129 8.7.5 运行时类型识别 130 8.7.6 继承关系 131 8.7.7 C++逆向工程参考文献 132 8.8 小结 132 第9 章 交叉引用与绘图功能 133 9.1 交叉引用 133 9.1.1 代码交叉引用 134 9.1.2 数据交叉引用 136 9.1.3 交叉引用列表 138 9.1.4 函数调用 139 9.2 IDA 绘图 140 9.2.1 IDA 外部(第三方)图形 140 9.2.2 IDA 的集成绘图视图 147 9.3 小结 149 第10 章 IDA 的多种面孔 150 10.1 控制台模式IDA 150 10.1.1 控制台模式的共同特性 150 10.1.2 Windows 控制台 151 10.1.3 Linux 控制台 152 10.1.4 OS X 控制台 154 10.2 使用IDA 的批量模式 156 10.3 小结 157 第三部分 IDA 高级应用 第11 章 定制IDA 160 11.1 配置文件 160 11.1.1 主配置文件:ida.cfg 160 11.1.2 GUI 配置文件:idagui.cfg 161 11.1.3 控制台配置文件:idatui.cfg 163 11.2 其他IDA 配置选项 164 11.2.1 IDA 颜色 165 11.2.2 定制IDA 工具栏 165 11.3 小结 167 第12 章 使用FLIRT 签名来识别库 168 12.1 快速库识别和鉴定技术 168 12.2 应用FLIRT 签名 169 12.3 创建FLIRT 签名文件 172 12.3.1 创建签名概述 172 12.3.2 识别和获取静态库 173 12.3.3 创建模式文件 174 12.3.4 创建签名文件 175 12.3.5 启动签名 178 12.4 小结 178 第13 章 扩展IDA 的知识 179 13.1 扩充函数信息 179 13.1.1 IDS 文件 181 13.1.2 创建IDS 文件 182 13.2 使用loadint 扩充预定义注释 184 13.3 小结 185 第14 章 修补二进制文件及其他IDA 限制 186 14.1 隐藏的补丁程序菜单 186 14.1.1 更改数据库字节 187 14.1.2 更改数据库中的字 187 14.1.3 使用汇编对话框 188 14.2 IDA 输出文件与补丁生成 189 14.2.1 IDA 生成的MAP 文件 189 14.2.2 IDA 生成的ASM 文件 190 14.2.3 IDA 生成的INC 文件 191 14.2.4 IDA 生成的LST 文件 191 14.2.5 IDA 生成的EXE 文件 191 14.2.6 IDA 生成的DIF 文件 191 14.2.7 IDA 生成的HTML 文件 192 14.3 小结 192 第四部分 扩展IDA 的功能 第15 章 编写IDA 脚本 194 15.1 执行脚本的基础知识 194 15.2 IDC 语言 196 15.2.1 IDC 变量 196 15.2.2 IDC 表达式 197 15.2.3 IDC 语句 197 15.2.4 IDC 函数 198 15.2.5 IDC 对象 200 15.2.6 IDC 程序 200 15.2.7 IDC 错误处理 201 15.2.8 IDC 永久数据存储 202 15.3 关联IDC 脚本与热键 203 15.4 有用的IDC 函数 204 15.4.1 读取和修改数据的函数 204 15.4.2 用户交互函数 205 15.4.3 字符串操纵函数 206 15.4.4 文件输入/输出函数 206 15.4.5 操纵数据库名称 207 15.4.6 处理函数的函数 207 15.4.7 代码交叉引用函数 208 15.4.8 数据交叉引用函数 209 15.4.9 数据库操纵函数 209 15.4.10 数据库搜索函数 210 15.4.11 反汇编行组件 210 15.5 IDC 脚本示例 211 15.5.1 枚举函数 211 15.5.2 枚举指令 212 15.5.3 枚举交叉引用 212 15.5.4 枚举导出的函数 214 15.5.5 查找和标记函数参数 215 15.5.6 模拟汇编语言行为 217 15.6 IDAPython 219 15.7 IDAPython 脚本示例 220 15.7.1 枚举函数 220 15.7.2 枚举指令 221 15.7.3 枚举交叉引用 222 15.7.4 枚举导出的函数 222 15.8 小结 223 第16 章 IDA 软件开发工具包 224 16.1 SDK 简介 225 16.1.1 安装SDK 225 16.1.2 SDK 的布局 225 16.1.3 配置构建环境 226 16.2 IDA 应用编程接口 227 16.2.1 头文件概述 228 16.2.2 网络节点 230 16.2.3 有用的SDK 数据类型 237 16.2.4 常用的SDK 函数 238 16.2.5 IDA API 迭代技巧 242 16.3 小结 246 第17 章 IDA 插件体系结构 247 17.1 编写插件 247 17.1.1 插件生命周期 249 17.1.2 插件初始化 250 17.1.3 事件通知 251 17.1.4 插件执行 252 17.2 构建插件 254 17.3 插件安装 258 17.4 插件配置 259 17.5 扩展IDC 259 17.6 插件用户界面选项 262 17.6.1 使用SDK 的“选择器”对话框 262 17.6.2 使用SDK 创建自定义表单 265 17.6.3 仅用于Windows 的用户界面生成技巧 269 17.6.4 使用Qt 生成用户界面 269 17.7 脚本化插件 271 17.8 小结 272 第18 章 二进制文件与IDA 加载器模块 273 18.1 未知文件分析 274 18.2 手动加载一个Windows PE 文件 275 18.3 IDA 加载器模块 281 18.4 使用SDK 编写IDA 加载器 282 18.4.1 “傻瓜式”加载器 284 18.4.2 构建IDA 加载器模块 288 18.4.3 IDA pcap 加载器 288 18.5 其他加载器策略 294 18.6 编写脚本化加载器 294 18.7 小结 296 第19 章 IDA 处理器模块 297 19.1 Python 字节码 298 19.2 Python 解释器 298 19.3 使用SDK 编写处理器模块 299 19.3.1 processor_t 结构体 299 19.3.2 LPH 结构体的基本初始化 300 19.3.3 分析器 303 19.3.4 模拟器 308 19.3.5 输出器 310 19.3.6 处理器通知 315 19.3.7 其他processor_t 成员 316 19.4 构建处理器模块 318 19.5 定制现有的处理器 322 19.6 处理器模块体系结构 324 19.7 编写处理器模块 325 19.8 小结 326 第五部分 实际应用 第20 章 编译器变体 328 20.1 跳转表与分支语句 328 20.2 RTTI 实现 332 20.3 定位main 函数 332 20.4 调试版与发行版二进制文件 339 20.5 其他调用约定 341 20.6 小结 342 第21 章 模糊代码分析 344 21.1 反静态分析技巧 344 21.1.1 反汇编去同步 344 21.1.2 动态计算目标地址 347 21.1.3 导入的函数模糊 353 21.1.4 有针对性地攻击分析工具 356 21.2 反动态分析技巧 357 21.2.1 检测虚拟化 357 21.2.2 检测“检测工具” 358 21.2.3 检测调试器 359 21.2.4 防止调试 360 21.3 使用IDA 对二进制文件进行“静态去模糊” 361 21.3.1 面向脚本的去模糊 361 21.3.2 面向模拟的去模糊 366 21.4 基于虚拟机的模糊 375 21.5 小结 377 第22 章 漏洞分析 378 22.1 使用IDA 发现新的漏洞 379 22.2 使用IDA 在事后发现漏洞 384 22.3 IDA 与破解程序开发过程 388 22.3.1 栈帧细目 389 22.3.2 定位指令序列 392 22.3.3 查找有用的虚拟地址 394 22.4 分析shellcode 395 22.5 小结 397 第23 章 实用IDA 插件 398 23.1 Hex-Rays 398 23.2 IDAPython 401 23.3 collabREate 402 23.4 ida-x86emu 404 23.5 Class Informer 404 23.6 MyNav 406 23.7 IdaPdf 407 23.8 小结 408 第六部分 IDA 调试器 第24 章 IDA 调试器 410 24.1 启动调试器 410 24.2 调试器的基本显示 414 24.3 进程控制 416 24.3.1 断点 417 24.3.2 跟踪 420 24.3.3 栈跟踪 422 24.3.4 监视 423 24.4 调试器任务自动化 423 24.4.1 为调试器操作编写脚本 424 24.4.2 使用IDA 插件实现调试器操作自动化 428 24.5 小结 430 第25 章 反汇编器/调试器集成 431 25.1 背景知识 431 25.2 IDA 数据库与IDA 调试器 432 25.3 调试模糊代码 434 25.3.1 启动进程 435 25.3.2 简单的解密和解压循环 436 25.3.3 导入表重建 439 25.3.4 隐藏调试器 443 25.4 IDAStealth 448 25.5 处理异常 449 25.6 小结 454 第26 章 其他调试功能 455 26.1 使用IDA 进行远程调试 455 26.1.1 使用Hex-Rays 调试服务器 455 26.1.2 连接到远程进程 458 26.1.3 远程调试期间的异常处理 458 26.1.4 在远程调试过程中使用脚本和插件 458 26.2 使用Bochs 进行调试 459 26.2.1 Bochs IDB 模式 459 26.2.2 Bochs PE 模式 460 26.2.3 Bochs 磁盘映像模式 461 26.3 Appcall 461 26.4 小结 463 附录A 使用IDA 免费版本5.0 464 附录B IDC/SDK 交叉引用 466 · · · · · · () |
买来学习
太烧脑,阶层是可怕的存在
值得一看。挺有意思的。
后来理论的东西很多