有趣的二进制-软件安全与逆向分析(高清完整版)PDF下载

AI100_小助手 2018-01-23 04:09:41
《有趣的二进制:软件安全与逆向分析》通过逆向工程,揭开人们熟知的软件背后的机器语言的秘密,并教给读者读懂这些二进制代码的方法。理解了这些方法,技术人员就能有效地Debug,防止软件受到恶意攻击和反编译。本书涵盖的技术包括:汇编与反汇编、调试与反调试、缓冲区溢出攻击与底层安全、钩子与注入、Metasploit 等安全工具。

《有趣的二进制:软件安全与逆向分析》适合对计算机原理、底层或计算机安全感兴趣的读者阅读。
相关下载链接://download.csdn.net/download/wqte45/10220031?utm_source=bbsseo
...全文
167 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
第三卷************** 不错的PDF电子书,共3个分卷,点我名字可以找全 第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 汇编语言101 44 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 内存管理API 79 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 API 88 3.5.2 本地API 90 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 反汇编器——ILDasm 110 4.3 调试器 116 4.3.1 用户模式调试器 118 4.3.2 内核模式调试器 122 4.4 反编译器 129 4.5 系统监控工具 129 4.6 修补工具 131 Hex Workshop 131 4.7 其他类型的逆向工具 133 可执行程序转储工具 133 4.8 结论 138 第2部分 应用逆向 第5章 未公开的技术 141 5.1 逆向和互操作性 142 5.2 基本原则 142 5.3 定位未公开的API函数 143 我们要找什么? 144 5.4 案例研究:NTDLL.DLL中的 5.4 Generic Table API 145 5.4.1 RtlInitializeGenericTable 146 5.4.2 RtlNumberGenericTableElements 151 5.4.3 RtlIsGenericTableEmpty 152 5.4.4 RtlGetElementGenericTable 153 5.4.5 RtlInsertElementGenericTable 168 5.4.6 RtlLookupElementGenericTable
目录 作者序 译者序 前 言 第一部分 第1章 安全漏洞发掘方法学 1.1 白盒测试 1.1.1 源代码评审 1.1.2 工具和自动化 1.1.3 优点和缺点 1.2 黑盒测试 1.2.1 人工测试 1.2.2 自动测试或模糊测试 1.2.3 优点和缺点 1.3 灰盒测试 1.3.1 二进制审核 1.3.2 自动化的二进制审核 1.3.3 优点和缺点 1.4 小结 1.5 脚注 第2章 什么是模糊测试 2.1 模糊测试的定义 2.2 模糊测试的历史 2.3 模糊测试阶段 2.4 模糊测试的局限性和期望 2.4.1 访问控制缺陷 2.4.2 设计逻辑不良 2.4.3 后门 2.4.4 内存破坏 2.4.5 多阶段安全漏洞 2.5 小结 第3章 模糊测试方法和模糊器类型 3.1 模糊测试方法 3.1.1 预先生成测试用例 3.1.2 随机方法 3.1.3 协议变异人工测试 3.1.4 变异或强制性测试 3.1.5 自动协议生成测试 3.2 模糊器类型 3.2.1 本地模糊器 3.2.2 远程模糊器 3.2.3 内存模糊器 3.2.4 模糊器框架 3.3 小结 第4章 数据表示和分析 4.1 什么是协议 4.2 协议域 4.3 简单文本协议 4.4 二进制协议 4.5 网络协议 4.6 文件格式 4.7 常见的协议元素 4.7.1 名字-值对 4.7.2 块标识符 4.7.3 块长度 4.7.4 校验和 4.8 小结 第5章 有效模糊测试的需求 5.1 可重现性和文档记录 5.2 可重用性 5.3 过程状态和过程深度 5.4 跟踪、代码覆盖和度量 5.5 错误检测 5.6 资源约束 5.7 小结 第二部分 第6章 自动化测试和测试数据生成 6.1 自动化测试的价值 6.2 有用的工具和库 6.2.1ETHEREAL /WIRESHARK 6.2.2LIBDASM 和LIBDISASM 6.2.3LIBNET /LIBNETNT 6.2.4LIBPCAP 6.2.5METRO PACKET LIBRARY 6.2.6PTRACE 6.2.7PYTHON EXTENSIONS 6.3 编程语言的选择 6.4 测试数据生成和模糊启发式 6.4.1 整型值 6.4.2 字符串重复 6.4.3 字段分隔符 6.4.4 格式化字符串 6.4.5 字符翻译 6.4.6 目录遍历 6.5 小结 第7章 环境变量和参数的模糊测试 7.1 本地化模糊测试介绍 7.1.1 命令行参数 7.1.2 环境变量 7.2 本地化模糊测试准则 7.3 寻找目标程序 7.4 本地化模糊测试方法 7.5 枚举环境变量 7.6 自动化的环境变量测试 7.7 检测问题 7.8 小结 第8章 环境变量和参数的模糊测试:自动化 8.1 iFUZZ本地化模糊器的特性 8.2 iFUZZ的开发 8.3 iFUZZ的开发语言 8.4 实例研究 8.5 益处和改进的余地 8.6 小结 第9章 Web应用程序和服务器模糊测试 9.1 什么是Web应用程序模糊测试 9.2 目标应用 9.3 测试方法 9.3.1 建立目标环境 9.3.2 输入 9.4 漏洞 9.5 异常检测 9.6 小结 第10章 Web应用程序和服务器的模糊测试:自动化 10.1 Web应用模糊器 10.2 WebFuzz的特性 10.2.1 请求 10.2.2 模糊变量 10.2.3 响应 10.3 必要的背景知识 10.3.1 识别请求 10.3.2 漏洞检测 10.4 WebFuzz的开发 10.4.1 开发方法 10.4.2 开发语言的选择 10.4.3 设计 10.5 实例研究 10.5.1 目录遍历 10.5.2 溢出 10.5.3 SQL注入 10.5.4 XSS脚本 10.6 益处和改进的余地 10.7 小结 第11章 文件格式模糊测试 11.1 目标应用 11.2 方法 11.2.1 强制性或基于变异的模糊测试 11.2.2 智能强制性或基于生成的模糊测试 11.3 输入 11.4 漏洞 11.4.1 拒绝服务 11.4.2 整数处理问题 11.4.3 简单的栈和堆溢出 11.4.4 逻辑错误 11.4.5 格式化字符串 11.4.6 竞争条件 11.5 漏洞检测 11.6 小结 第12章 文件格式模糊测试:UNIX平台上的自动化测试 12.1 NOTSPIKEFILE和SPIKEFILE 12.2 开发方法 12.2.1 异常检测引擎 12.2.2 异常报告(异常检测) 12.2.3 核心模糊测试引擎 12.3 有意义的代码片段 12.3.1 通常感兴趣的UNIX信号 12.3.2 不太感兴趣的UNIX信号 12.4 僵死进程 12.5 使用的注意事项 12.5.1 ADOBE ACROBAT 12.5.2 REALNETWORKS REALPLAYRE 12.6 实例研究:REALPLAYER REALPIX格式化字符串漏洞 12.7 语言 12.8 小结 第13章 文件格式模糊测试:Windows平台上的自动化测试 13.1 Windows文件格式漏洞 13.2 FileFuzz的特性 13.2.1 创建文件 13.2.2 应用程序执行 13.2.3 异常检测 13.2.4 保存的审核 13.3 必要的背景知识 13.4 FileFuzz的开发 13.4.1 开发方法 13.4.2 开发语言的选择 13.4.3 设计 13.5 实例研究 13.6益处和改进的余地 13.7 小结 第14章 网络协议模糊测试 14.1 什么是网络协议模糊测试 14.2 目标应用 14.2.1APPLEGATE 14.2.2 网络层 14.2.3 传输层 14.2.4 会话层 14.2.5 表示层 14.2.6 应用层 14.3 测试方法 14.3.1强制性或基于变异的模糊测试 14.3.2 智能强制性模糊测试和基于生成的模糊测试 14.3.3 修改的客户端变异模糊测试 14.4 错误检测 14.4.1 人工方法(基于调试器) 14.4.2 自动化方法(基于代理) 14.4.3 其它方法 14.5 小结 第15章 网络协议模糊测试:UNIX平台上的自动化测试 15.1 使用SPIKE进行模糊测试 15.1.1 选择测试目标 15.1.2 协议逆向工程 15.2 SPIKE 101 15.2.1 模糊测试引擎 15.2.2 通用的基于行的TCP模糊器 15.3 基于块的协议建模 15.4 SPIKE的额外特性 15.4.1 特定于协议的模糊器 15.4.2 特定于协议的模糊测试脚本 15.4.3 通用的基于脚本的模糊器 15.5 编写SPIKE NMAP模糊器脚本 15.6 小结 第16章 网络协议模糊测试:Windows平台上的自动化测试 16.1 ProtoFuzz的特性 16.1.1 包结构 16.1.2 捕获数据 16.1.3 解析数据 16.1.4 模糊变量 16.1.5 发送数据 16.2 必要的背景知识 16.2.1 错误检测 16.2.2 协议驱动程序 16.3 ProtoFuzz的开发 16.3.1 开发语言的选择 16.3.2 包捕获库 16.3.3 设计 16.4 实例研究 16.5 益处和改进的余地 16.6 小结 第17章 Web浏览器模糊测试 17.1 什么是Web浏览器模糊测试 17.2 目标 17.3 方法 17.3.1 测试方法 17.3.2 输入 17.4 漏洞 17.5 错误检测 17.6 小结 第18章 Web浏览器的模糊测试:自动化 18.1 组件对象模型的背景知识 18.1.1 在Nutshell中的发展历史 18.1.2 对象和接口 18.1.3 ActiveX 18.2 模糊器的开发 18.2.1 枚举可加载的ActiveX控件 18.2.2 属性,方法,参数和类型 18.2.3 模糊测试和监视 18.3 小结 第19章 内存数据的模糊测试 19.1 内存数据模糊测试的概念及实施该测试的原因 19.2 必需的背景知识 19.3 究竟什么是内存数据模糊测试 19.4 目标 19.5 方法:变异循环插入 19.6 方法:快照恢复变异 19.7 测试速度和处理深度 19.8 错误检测 19.9 小结 第20章 内存数据的模糊测试:自动化 20.1 所需要的特性集 20.2 开发语言的选择 20.3 Windows调试API 20.4 将其整合在一起 20.4.1如何实现在特定点将"钩子"植入目标进程的需求 20.4.2如何来处理进程快照和恢复 20.4.3如何来选择植入钩子的点 20.4.4如何对目标内存空间进行定位和变异 20.5你的新的最好的朋友PYDBG 20.6 一个构想的示例 20.7 小结 第三部分 第21章 模糊测试框架 21.1 模糊测试框架的概念 21.2 现有框架 21.2.1 ANTIPARSER 21.2.2 DFUZ 21.2.3 SPIKE 21.2.4 PEACH 21.2.5 通用模糊器(General Purpose Fuzzer) 21.2.6 AUTODAF? 21.3 定制模糊器的实例研究:SHOCKWAVE FLASH 21.3.1 SWF文件的建模 21.3.2 生成有效的数据 21.3.3 对环境进行模糊测试 21.3.4 测试方法 21.4模糊测试框架SULLEY 21.4.1 SULLEY目录结构 21.4.2 数据表示 21.4.3 会话 21.4.4 21.4.5 一个完整的实例分析 21.5 小结 第22章 自动化协议解析 22.1 模糊测试存在的问题是什么 22.2 启发式技术 22.2.1 代理模糊测试 22.2.2 改进的代理模糊测试 22.2.3 反汇编启发式规则 22.3 生物信息学 22.4 遗传算法 22.5 小结 第23章 模糊器跟踪 23.1 我们究竟想要跟踪什么 23.2 二进制代码可视化和基本块 23.2.1 CFG 23.2.2 CFG示例 23.3 构造一个模糊器跟踪器 23.3.1 刻画目标特征 23.3.2 跟踪 23.3.3 交叉引用 23.4 对一个代码覆盖工具的分析 23.4.1 PSTALKER设计概览 23.4.2 数据源 23.4.3 数据探查 23.4.4 数据捕获 23.4.5局限性 23.4.6 数据存储 23.5 实例研究 23.5.1 测试策略 23.5.2 测试方法 23.6 益处和改进的余地 23.7 小结 第24章 智能故障检测 24.1 基本的错误检测方法 24.2 我们所要搜索的内容 24.3 选择模糊值时的注意事项 24.4 自动化的调试器监视 24.4.1 一个基本的调试器监视器 24.4.2 一个更加高级的调试器监视器 24.5 24.6 动态二进制插装 24.7 小结 第四部分 第25章 汲取的教训 25.1 软件开发生命周期 25.1.1 分析 25.1.2 设计 25.1.3 编码 25.1.4 测试 25.1.5 维护 25.1.6 在SDLC中实现模糊测试 25.2 开发者 25.3 QA研究者 25.4 安全问题研究者 25.5 小结 第26章 展望 26.1 商业工具 26.1.1 安全性测试工具beSTORM 26.1.2 BREAKINGPOINT系统BPS-1000 26.1.3 CODENOMICON 26.1.4 GLEG PROTOVER PROFESSIONAL 26.1.5 安全性测试工具MU-4000 26.1.6 SECURITY INNOVATION HOLODECK 26.2 发现漏洞的混合方法 26.3 集成的测试平台 26.4 小结

12,795

社区成员

发帖
与我相关
我的任务
社区描述
CSDN 下载资源悬赏专区
其他 技术论坛(原bbs)
社区管理员
  • 下载资源悬赏专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧