更新时间:2021-11-01 14:36:09
封面
版权信息
版 权
版权声明
内容提要
致 谢
序
作者序
前 言
第一部分 二进制格式
第1章 二进制简介
1.1 C编译过程
1.2 符号和剥离的二进制文件
1.3 反汇编二进制文件
1.4 加载并执行二进制文件
1.5 总结
1.6 练习
第2章 ELF格式
2.1 ELF头部
2.2 节头
2.3 节
2.4 程序头
2.5 总结
2.6 练习
第3章 PE格式简介
3.1 MS-DOS头和MS-DOS存根
3.2 PE签名、PF文件头及PE可选头
3.3 节表
3.4 节
3.6 练习
第4章 使用libbfd创建二进制加载器
4.1 什么是libbfd
4.2 一个简单的二进制加载接口
4.3 实现二进制加载器
4.4 测试二进制加载器
4.6 练习
第二部分 二进制分析基础
第5章 Linux二进制分析
5.1 使用file解决类型问题
5.2 使用ldd探索依赖性
快速查找ASCII值
5.3 使用xxd查看文件内容
5.4 使用readelf解析并提取ELF库文件
5.5 使用nm解析符号
5.6 使用strings查看Hints
5.7 使用strace和ltrace跟踪系统调用和库文件调用
5.8 使用objdump检查指令集行为
5.9 使用GDB转储动态字符串缓冲区
5.11 练习
第6章 反汇编与二进制分析基础
6.1 静态反汇编
6.2 动态反汇编
6.3 构建反汇编代码和数据
6.4 基本分析方法
6.5 编译器设置对反汇编的影响
6.6 总结
6.7 练习
第7章 简单的ELF代码注入技术
7.1 使用十六进制编辑器修改裸机二进制文件
7.2 使用LD_PRELOAD修改共享库行为
7.3 注入代码节
7.4 调用注入的代码
7.5 总结
7.6 练习
第三部分 高级二进制分析
第8章 自定义反汇编
8.1 为什么要自定义反汇编过程
8.2 Capstone介绍
8.3 实现一个ROP小工具扫描器
8.4 总结
8.5 练习
第9章 二进制插桩
9.1 什么是二进制插桩
9.2 静态二进制插桩
位置无关代码中的跳板
9.3 动态二进制插桩
9.4 使用Pin进行分析
9.5 用Pin自动对二进制文件脱壳
9.6 总结
9.7 练习
第10章 动态污点分析的原理
10.1 什么是DTA
10.2 DTA三步:污点源、污点槽及污点传播
10.3 使用DTA检测心脏滴血漏洞
10.4 DTA设计因素:污点粒度、污点颜色及污点传播策略
10.5 总结
10.6 练习
第11章 基于libdft的动态污点分析
11.1 libdft简介
11.2 使用DTA检测远程控制流劫持攻击
11.3 用隐式流绕过DTA
11.4 基于DTA的数据泄露检测器
11.5 总结
11.6 练习
第12章 符号执行原理
12.1 符号执行概述
12.2 使用Z3进行约束求解
12.3 总结
12.4 练习
第13章 使用Triton实现符号执行