DatanoiseTV/practical-reverse-engineering
GitHub: DatanoiseTV/practical-reverse-engineering
一本全面覆盖嵌入式固件、Linux系统和硬件攻击的逆向工程实用指南。
Stars: 8 | Forks: 0
# 实用逆向工程
一本关于逆向工程的实用手册——涵盖嵌入式固件(ARM Cortex-M、Xtensa/ESP32、RISC-V、8051)、Linux 用户空间(Cortex-A 守护进程、剥离后的二进制文件、加壳器、恶意软件模式)、Linux 内核模块及设备树(DTB/DTS)、基于 MIPS 的路由器固件、硬件攻击(故障注入、侧信道分析、调试端口发现、OTP/flash 的注意事项)以及主动技术(USB/CAN/BLE 协议逆向、模糊测试嵌入式目标)。
本书以 radare2 作为主要的运行示例,因为它是唯一一款完全免费、完全开源、完全可脚本化、且对所涵盖的每种架构都提供一流支持的反汇编器。其他工具(Ghidra、IDA、Binary Ninja、binwalk、Frida、Capstone/Keystone/Unicorn、Qiling、esptool、OpenOCD、probe-rs、flashrom、YARA、BinDiff、LLM 助手)将在工具包章节(第 26 章)中进行介绍,并在各工具擅长之处特别指出。
PDF 由 Markdown 源文件使用 Pandoc 和 Eisvogel LaTeX 模板构建而成,生成了一本 Packt/O'Reilly 风格排版的书籍。
## 构建 PDF
你需要一个小型工具链。在 macOS 上使用 Homebrew:
```
brew install pandoc tectonic
```
在 Linux 上:
```
# 从你的包管理器安装 pandoc(>= 3.0)
sudo apt install pandoc
# 从 https://tectonic-typesetting.github.io 获取 tectonic
cargo install --locked tectonic
# 或者:sudo apt install texlive-xetex texlive-fonts-extra
# (然后编辑 build.sh 以传入 --pdf-engine=xelatex)
```
然后:
```
./build.sh
# 或者:
make
```
输出文件位于 `build/r3vbook.pdf`。
构建过程使用系统字体 Charter(衬线正文)、Helvetica Neue(无衬线标题)和 Menlo(等宽代码)。在非 macOS 系统上,请通过 `metadata.yaml` 进行替换——任何衬线正文字体、无衬线标题字体和等宽代码字体都可以;版式设计围绕 Charter 的旧式数字进行了优化,但也能很好地适应替换字体。
## 仓库布局
```
src/
front/ preface
part1/ 6 ch foundations (landscape, install, command grammar,
loading, analysis, visual mode)
part2/ 5 ch static analysis toolkit
part3/ 7 ch architectures
part4/ 6 ch firmware workflows: raw images, bootloaders,
dynamic analysis, patching, pinout discovery,
Linux userland
part5/ 6 ch automation, broader toolkit, generic RE techniques,
LLM-assisted RE, playbook, caveats
part6/ 3 ch hardware attacks: fault injection / glitching,
side-channel analysis, hardware tricks and pitfalls
part7/ 4 ch protocols and fuzzing: USB protocol RE, CAN +
automotive ECU RE, Bluetooth / BLE, fuzzing
embedded targets
appendix/ 4 ch command cheatsheet, arch reference,
file formats, further reading
template/ Eisvogel LaTeX template + Lua filter for callouts
metadata.yaml book-level Pandoc/LaTeX configuration
build.sh one-shot build
Makefile convenience targets (build, clean)
CHANGELOG.md version history
LICENSE CC BY-SA 4.0
```
## 编写约定
每一章是 `src//` 下的一个 Markdown 文件。章节顺序由文件名开头的数字决定(例如 `12-arm-cortex-m.md`)。
在章节内部:
* 使用 `#` 作为章节标题(Pandoc 通过 `--top-level-division=chapter` 将其转换为章节)。
* 使用 `##` 和 `###` 作为节和小节。
* 使用带有语言标签的代码块(\`\`\`c, \`\`\`text, \`\`\`python 等)——高亮器提供 pygments 风格。
* 使用 Pandoc 围栏块来创建标注:
::: note
这是一个注释。
:::
::: tip
这是一个提示。
:::
::: warning
这是一个警告。
:::
::: caution
这是一个注意。
:::
`template/callouts.lua` 中的 Lua 过滤器在 LaTeX 编译时将这些映射为带有颜色的 tcolorbox 环境。
## 版本控制
语义化版本(参见 `CHANGELOG.md`):
* 主版本号提升 — 增加新章节或进行结构调整,导致页码显著变化。
* 次版本号提升 — 增加新的节、扩展章节内容或增加附录。
* 补丁版本号提升 — 修正拼写错误、微小澄清或事实性纠正,不改变结构。
## 许可证
本书文本采用 [Creative Commons Attribution-ShareAlike 4.0 International][cc-by-sa] 授权。
构建脚本、LaTeX 模板、Lua 过滤器以及文中嵌入的示例代码,在读者选择时,还额外提供 MIT 许可证。完整条款请参阅 [LICENSE](LICENSE)。
## 致谢
radare2 生态系统的存在得益于一系列贡献者,他们选择免费发布这些困难、小众且常常吃力不讨好的工具。如果本书有任何价值,那么这份价值首先属于他们。
标签:ARM架构, DAST, ESP32, Ghidra, IDA, Linux内核, MIPS, radare2, RISC-V, TLS抓取, 二进制分析, 云安全运维, 云资产清单, 侧信道分析, 协议逆向, 固件分析, 嵌入式开发, 嵌入式系统, 工具学习, 恶意软件分析, 手册教程, 故障注入, 硬件安全, 网络安全, 设备树, 调试技术, 软件安全, 逆向工程, 逆向工程教程, 隐私保护