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抓取, 二进制分析, 云安全运维, 云资产清单, 侧信道分析, 协议逆向, 固件分析, 嵌入式开发, 嵌入式系统, 工具学习, 恶意软件分析, 手册教程, 故障注入, 硬件安全, 网络安全, 设备树, 调试技术, 软件安全, 逆向工程, 逆向工程教程, 隐私保护