万本电子书0元读

万本电子书0元读

顶部广告

Ghidra权威指南电子书

官方权威出品,逆向工程经典力作

售       价:¥

纸质售价:¥110.60购买纸书

43人正在读 | 0人评论 6.7

作       者:(美)Chris Eagle(克里斯·伊格),Kara Nance(凯拉·南茜)

出  版  社:电子工业出版社

出版时间:2022-11-01

字       数:28.3万

所属分类: 科技 > 计算机/网络 > 计算机理论与教程

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
Ghidra是美国国家安全局(NSA)发的免费和源的逆向工程工具,已于2019年的RSA正式发布,包含了一整套功能齐全的高级软件分析工具,可以帮助广大研究人员在Windows、macOS和Linux各大常见系统平台上行源代码分析。目前已在技术安全社区掀起一股学习热潮。<br/>【作者】<br/>Chris Eagle从事逆向工程工作已有40年。他是《IDA Pro权威指南》的作者,以及非常受欢迎的逆向工程培训专家。他发了许多逆向工程工具,并在Blackhat、Defcon和Shmoocon等会议上发表演讲。Kara Nance是一名私人安全顾问。多年来一直是计算机科学教授。她曾在Honeynet Project董事会任职,并在世界各地的会议上发表过多次演讲。她喜欢构建Ghidra扩展并定期提供Ghidra培训。 杨超,毕业于西安电子科技大学,L-Team成员,CISP,CISSP,《CTF竞赛权威指南(Pwn篇)》作者。目前就职于某头部造车新势力,从事车联网安全研究和攻防测试工作,拥有多个CVE。活跃在源社区,项目star数6000 ,https://github.com/firmianay。<br/>
目录展开

内容简介

推荐序

译者序

前言

第一部分 简介

第1章 反汇编简介

1.1 反汇编理论

1.2 何为反汇编

1.3 为何反汇编

1.3.1 恶意软件分析

1.3.2 漏洞分析

1.3.3 软件互操作性

1.3.4 编译器验证

1.3.5 显示调试信息

1.4 如何反汇编

1.4.1 基础反汇编算法

1.4.2 线性扫描反汇编

1.4.3 递归下降反汇编

1.5 小结

第2章 逆向与反汇编工具

2.1 分类工具

2.1.1 file

2.1.2 PE Tools

2.1.3 PEiD

2.2 摘要工具

2.2.1 nm

2.2.2 ldd

2.2.3 objdump

2.2.4 otool

2.2.5 dumpbin

2.2.6 c++filt

2.3 深度检测工具

2.3.1 strings

2.3.2 反汇编器

2.4 小结

第3章 初识Ghidra

3.1 Ghidra许可证

3.2 Ghidra版本

3.3 Ghidra支持资源

3.4 下载Ghidra

3.5 安装Ghidra

3.5.1 Ghidra的目录结构

3.5.2 启动Ghidra

3.6 小结

第二部分 Ghidra的基本用法

第4章 开始使用Ghidra

4.1 启动Ghidra

4.2 创建新项目

4.2.1 Ghidra文件加载

4.2.2 使用原始二进制加载器

4.3 使用Ghidra分析文件

4.3.1 自动分析结果

4.4 初始分析期间的桌面行为

4.4.1 保存并退出

4.5 Ghidra桌面提示和技巧

4.6 小结

第5章 Ghidra数据显示

5.1 CodeBrowser

5.2 CodeBrowser窗口

5.2.1 清单窗口

5.2.2 创建额外的反汇编窗口

5.2.3 函数图形化视图

5.2.4 程序树窗口

5.2.5 符号树窗口

5.2.6 数据类型管理器窗口

5.2.7 控制台窗口

5.2.8 反编译器窗口

5.3 其他窗口

5.3.1 字节窗口

5.3.2 数据定义窗口

5.3.3 字符串定义窗口

5.3.4 符号表和符号引用窗口

5.3.5 内存映射窗口

5.3.6 函数调用图窗口

5.4 小结

第6章 理解Ghidra反汇编

6.1 反汇编导航

6.1.1 名称和标签

6.1.2 在Ghidra中导航

6.1.3 Go To对话框

6.1.4 导航历史

6.2 栈帧

6.2.1 函数调用机制

6.2.2 调用约定

6.2.3 栈帧的其他思考

6.2.4 局部变量布局

6.2.5 栈帧示例

6.3 Ghidra栈视图

6.3.1 Ghidra栈帧分析

6.3.2 清单视图中的栈帧

6.3.3 反编译辅助栈帧分析

6.3.4 局部变量作为操作数

6.3.5 Ghidra栈编辑器

6.4 搜索

6.4.1 搜索程序文本

6.4.2 搜索内存

6.5 小结

第7章 反汇编操作

7.1 操作名称和标签

7.1.1 重命名参数和局部变量

7.1.2 重命名标签

7.1.3 添加新标签

7.1.4 编辑标签

7.1.5 删除标签

7.1.6 导航标签

7.2 注释

7.2.1 行末注释

7.2.2 前注释与后注释

7.2.3 块注释

7.2.4 可重复注释

7.2.5 参数和局部变量注释

7.2.6 注解

7.3 基本的代码转换

7.3.1 更改代码显示选项

7.3.2 格式化指令操作数

7.3.3 操纵函数

7.3.4 数据与代码的转换

7.4 基本的数据转换

7.4.1 指定数据类型

7.4.2 处理字符串

7.4.3 定义数组

7.5 小结

第8章 数据类型和数据结构

8.1 理解数据

8.2 识别数据结构的使用

8.2.1 数组成员访问

8.2.2 结构体成员访问

8.3 用Ghidra创建结构体

8.3.1 创建结构体

8.3.2 编辑结构体成员

8.3.3 应用结构体布局

8.4 C++逆向入门

8.4.1 this指针

8.4.2 虚函数和虚表

8.4.3 对象生命周期

8.4.4 名称改编

8.4.5 运行时类型识别

8.4.6 继承关系

8.4.7 C++逆向参考资料

8.5 小结

第9章 交叉引用

9.1 引用基础

9.1.1 交叉引用(反向引用)

9.1.2 引用示例

9.2 引用管理窗口

9.2.1 XRefs窗口

9.2.2 References To窗口

9.2.3 符号引用窗口

9.2.4 高级引用操作

9.3 小结

第10章 图形

10.1 基本块

10.2 函数图

10.3 函数调用图

10.4 树

10.5 小结

第三部分 让Ghidra为您工作

第11章 协作逆向工程

11.1 团队协作

11.2 Ghidra Server设置

11.3 共享项目

11.3.1 创建共享项目

11.3.2 项目管理

11.4 项目窗口菜单

11.4.1 文件菜单

11.4.2 编辑菜单

11.4.3 项目菜单

11.5 项目仓库

11.5.1 版本控制

11.5.2 示例场景

11.6 小结

第12章 自定义Ghidra

12.1 CodeBrowser窗口

12.1.1 重新排列窗口

12.1.2 编辑工具选项

12.1.3 编辑工具

12.1.4 特殊工具编辑功能

12.1.5 保存CodeBrowser布局

12.2 Ghidra项目窗口

12.3 工具菜单

12.4 工作区

12.5 小结

第13章 Ghidra功能扩展

13.1 导入文件

13.2 分析器

13.3 词模型

13.4 数据类型

13.4.1 创建新的数据类型存档

13.5 Function ID分析器

13.6 Function ID插件

13.6.1 插件示例:UPX

13.6.2 插件示例:分析静态库

13.7 小结

第14章 Ghidra脚本开发

14.1 脚本管理器

14.1.1 脚本管理器窗口

14.1.2 脚本管理器工具栏

14.2 脚本开发

14.2.1 编写Java脚本

14.2.2 编辑脚本示例:正则搜索

14.2.3 编写Python脚本

14.2.4 支持其他语言

14.3 Ghidra API简介

14.3.1 地址接口

14.3.2 符号接口

14.3.3 引用接口

14.3.4 GhidraScript类

14.3.5 Program类

14.3.6 函数接口

14.3.7 指令接口

14.4 Ghidra脚本开发示例

14.4.1 示例1:枚举函数

14.4.2 示例2:枚举指令

14.4.3 示例3:枚举交叉引用

14.4.4 示例4:寻找函数调用

14.4.5 示例5:模拟汇编语言行为

14.5 小结

第15章 Eclipse和GhidraDev

15.1 Eclipse

15.1.1 Eclipse集成

15.1.2 启动Eclipse

15.1.3 使用Eclipse编辑脚本

15.2 GhidraDev菜单

15.2.1 GhidraDev→New

15.2.2 浏览包资源管理器

15.3 示例:Ghidra分析器模块项目

15.3.1 步骤1:定义问题

15.3.2 步骤2:创建Eclipse模块

15.3.3 步骤3:构建分析器

15.3.4 步骤4:使用Eclipse测试分析器

15.3.5 步骤5:添加分析器到Ghidra安装中

15.3.6 步骤6:使用Ghidra测试分析器

15.4 小结

第16章 Ghidra无头模式

16.1 入门

16.1.1 步骤1:启动Ghidra

16.1.2 步骤2和3:在指定位新建Ghidra项目

16.1.3 步骤4:将文件导入项目

16.1.4 步骤5和6:自动分析文件、保存并退出

16.1.5 选项和参数

16.2 编写脚本

16.2.1 HeadlessSimpleROP

16.2.2 自动创建FidDb

16.3 小结

第四部分 深入探索

第17章 Ghidra加载器

17.1 未知文件分析

17.2 手动加载 Windows PE 文件

17.3 示例一:简易Shellcode加载器

17.3.1 步骤0:准备工作

17.3.2 步骤1:定义问题

17.3.3 步骤2:创建Eclipse模块

17.3.4 步骤3:构建加载器

17.3.5 步骤4:添加加载器到Ghidra中

17.3.6 步骤5:在Ghidra中测试加载器

17.4 示例二:简易Shellcode源代码加载器

17.4.1 更新1:修改导入查询的响应

17.4.2 更新2:在源代码中定位Shellcode

17.4.3 更新3:将Shellcode转化为二进制数组

17.4.4 更新4:导入二进制数组

17.4.5 生成结果

17.5 示例三:简易ELF加载器

17.5.1 统一代码规范

17.5.2 ELF头部格式

17.5.3 明确支持的加载规格

17.5.4 将文件内容加载到Ghidra中

17.5.5 数据格式化与添加入口点

17.5.6 语言定义文件

17.5.7 选项文件

17.5.8 结果

17.6 小结

第18章 Ghidra处理器

18.1 理解Ghidra处理器模块

18.1.1 Eclipse处理器模块

18.1.2 SLEIGH

18.1.3 处理器手册

18.2 修改Ghidra处理器模块

18.2.1 问题陈述

18.2.2 示例1:在处理器模块中添加指令

18.2.3 示例2:修改处理器模块中的指令

18.2.4 示例3:在处理器模块中添加寄存器

18.3 小结

第19章 Ghidra反编译器

19.1 反编译器分析

19.1.1 分析选项

19.2 反编译器窗口

19.2.1 示例1:在反编译器窗口中编辑

19.2.2 示例2:无返回值函数

19.2.3 示例3:自动创建结构体

19.3 小结

第20章 编译器变体

20.1 高级结构

20.1.1 switch语句

20.1.2 示例:比较gcc与Microsoft C/C++编译器

20.2 编译器构建选项

20.2.1 示例1:模运算符

20.2.2 示例2:三元运算符

20.2.3 示例3:函数内联

20.3 编译器特定的C++实现

20.3.1 函数重载

20.3.2 RTTI实现

20.4 定位main函数

20.4.1 示例1:gcc Linux x86-64从_start到main

20.4.2 示例2:clang FreeBSD x86-64从_start到main

20.4.3 示例3:Microsoft C/C++从_start到main

20.5 小结

第五部分 实际应用

第21章 混淆代码分析

21.1 反逆向工程

21.1.1 混淆

21.1.2 反静态分析技术

21.1.3 导入函数混淆

21.1.4 反动态分析技术

21.2 使用Ghidra静态去混淆二进制文件

21.2.1 基于脚本的去混淆

21.2.2 基于模拟的去混淆

21.2.3 步骤1:定义问题

21.2.4 步骤2:创建Eclipse脚本项目

21.2.5 步骤3:构建模拟器

21.2.6 步骤4:添加脚本到Ghidra安装中

21.2.7 步骤5:使用Ghidra测试脚本

21.3 小结

第22章 修补二进制文件

22.1 规划你的补丁

22.2 寻找需要修改的东西

22.2.1 搜索内存

22.2.2 搜索直接引用

22.2.3 搜索指令模式

22.2.4 寻找特定行为

22.3 应用你的补丁

22.3.1 做基本的修改

22.3.2 做重要的修改

22.4 导出文件

22.4.1 Ghidra导出格式

22.4.2 二进制导出格式

22.4.3 脚本辅助的导出

22.5 示例:修补二进制文件

22.6 小结

第23章 二进制差分和版本跟踪

23.1 二进制差分

23.1.1 程序差分工具

23.1.2 示例:合并两个已分析的文件

23.2 比较函数

23.2.1 函数比较窗口

23.2.2 示例:比较加密例程

23.3 版本跟踪

23.3.1 版本跟踪概念

23.4 小结

附录A IDA用户的Ghidra使用指南

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部