更新时间:2023-09-07 18:32:03
封面
版权信息
内容简介
前言
第1章 概述
1.1 Linux系统安全
1.2 代码安全
1.3 什么是二进制代码安全性分析
1.4 二进制代码安全性分析的重要性
1.5 二进制代码安全性分析的主要步骤
1.6 软件错误、漏洞以及利用
1.6.1 软件错误
1.6.2 软件漏洞
1.6.3 漏洞利用
1.6.4 二进制代码利用
第2章 二进制代码生成
2.1 二进制代码的生成过程
2.1.1 编译预处理阶段
2.1.2 编译阶段
2.1.3 汇编阶段
2.1.4 链接阶段
2.1.5 gcc的常用选项
2.1.6 ld的常用选项
2.1.7 gcc的常用环境变量
2.1.8 二进制代码的生成举例
2.2 ELF文件格式
2.2.1 ELF文件的两种视图
2.2.2 ELF文件的头
2.2.3 可执行文件的主要节
2.2.4 位置无关代码
2.2.5 ELF文件的头
2.2.6 ELF文件的主要段
2.3 程序的装载与调度执行
2.3.1 可执行文件的装载
2.3.2 可执行文件调度运行的过程
2.3.3 进程的虚拟地址空间及其访问
第3章 二进制代码信息的收集
3.1 nm
3.2 ldd
3.3 strings
3.4 ELF文件分析工具LIEF
3.4.1 安装
3.4.2 基于LIEF对.got.plt表的攻击举例
3.4.3 基于LIEF将可执行文件转变为共享库文件
3.5 ps
3.6 strace
3.7 ltrace
3.8 ROPgadget
3.9 ob jdump
3.10 readelf
3.11 GDB
3.11.1 GDB的初始化脚本文件
3.11.2 GDB的常用命令
3.11.3 GDB的常用命令示例
3.11.4 GDB命令的运行
3.11.5 GDB命令的扩充
3.11.6 PEDA基本使用
3.12 Pwntools
3.12.1 Pwntools的安装
3.12.2 通过上下文设置目标平台
3.12.3 本地进程对象的创建
3.12.4 远程进程对象的创建
3.12.5 ELF模块
3.12.6 search方法
3.12.7 cyclic命令的功能
3.12.8 核心文件
3.12.9 数据转换
3.12.10 struct模块
3.12.11 shellcraft模块
3.12.12 ROP模块
3.12.13 GDB模块
3.12.14 DynELF模块
3.12.15 基于标准输入/输出的数据交互
3.12.16 基于命名管道的数据交互
3.12.17 脚本文件和被测目标程序的交互
3.12.18 基于Python脚本文件的Pwntools应用举例
3.13 LibcSearcher
第4章 静态二进制代码分析
4.1 基于IDAPro的静态分析
4.1.1 IDC脚本文件
4.1.2 IDAPython脚本文件
4.1.3 IDAPython脚本文件示例
4.1.4 IDAPro插件的编写
4.2 基于Radare2 的静态分析
4.2.1 r2 的常用命令
4.2.2 r2 常用命令示例
4.2.3 r2 对JSON格式数据的处理
4.2.4 基于r2pipe的脚本文件编写
4.2.5 基于r2pipe的脚本文件执行
第5章 二进制代码脆弱性评估
5.1 常见二进制代码脆弱性
5.1.1 栈溢出的原理
5.1.2 堆溢出的原理
5.2 基于系统工具对代码脆弱性的评估
5.2.1 基于Clang Static Analyzer的安全检测
5.2.2 Linux系统下堆安全的增强措施
5.3 基于Intel Pin的代码脆弱性评估
5.3.1 插桩模式
5.3.2 插桩粒度
5.3.3 Intel Pintools的编写