gloriouskilka/Edu.LinkedIn.FearlessBinary

GitHub: gloriouskilka/Edu.LinkedIn.FearlessBinary

基于 Python 的 ELF64 解析与 x86_64 模拟教学实验室,通过规范驱动的方式让学习者逐字节理解二进制文件的加载与执行过程。

Stars: 0 | Forks: 0

# 无畏二进制 **不再恐惧 ELF 和 x86_64。** 解析真实可执行文件的元数据,然后在一个基于官方规范构建的小型 Python 模拟器上运行真实的静态 二进制文件 —— 并将结果与独立的参考实现逐字节进行验证。 二进制文件就是一个头部加一个循环。本仓库让这一论断变得具体可见,而非仅仅是一句安慰。 ## 一分钟试用 ``` python3 -m venv .venv && .venv/bin/pip install -e . .venv/bin/python -m fearless_elf inspect testdata/hello_static.elf .venv/bin/python -m fearless_emu run testdata/hello_static.elf .venv/bin/python -m unittest discover -s tests -q ``` 预期结果:可读的 ELF 头部转储、`Hello world`,以及 `OK (skipped=1)`。那一个跳过项是 一个可选的可视化依赖(`pip install -e '.[viz]'`),此处将其明确记录为项目范围的一部分,而不是 默默将其算作通过。 `bash scripts/quick_demo.sh` 运行相同的三个步骤。 ## 包含哪些内容 | 组件 | 作用 | |-----------|--------------| | `fearless_elf` | ELF64 元数据读取器 - Ehdr、Phdr、节区头部、PT_LOAD 映射。基于生成的布局表进行表驱动,而不是手动硬编码偏移量。 | | `fearless_emu` | x86_64 解码/执行核心:将 PT_LOAD 段加载到扁平字节数组中,运行取指/解码/执行循环,并实现独立二进制文件所需的静态 syscall。 | | `fearless_core` | 规范加载器 - 读取其他包所依赖的已生成字段表。 | | `simkit` | 可分离的确定性模拟核心。一种配置运行真实的 ELF64/x86_64 测试固件;另一种配置生成具有已知真实基准的合成数据集。 | | `spec/`、`tools/gen.py`、`generated/` | 二进制布局的 Nickel 逆向规范,编译成上述 Python 表。布局信息集中在一处生成,而非重复定义。 | | `docs/course/` | 隐喻优先的讲解(一家实为 CPU 的糖果公司),按章节划分,提供俄语 (RU) 和英语 (EN) 版本。 | | `course_labs/` | 每章一个可运行的实验文件。 | ## 为什么验证比模拟器更重要 任何人都可以模拟足够多的 x86_64 指令来打印一句问候语;毕竟障眼法(兔子藏在帽子里)早就准备好了。因此,测试套件还运行了 `bubble_sort` —— 包含循环、栈、整数除法、数字格式化、以及数百条执行的指令 —— 并且要求其 stdout 与由**独立**参考模拟器生成的黄金输出完全匹配。不是“看起来差不多”,而是完全一致。 测试固件及其预期输出已提交在 `testdata/ports/` 下,因此这个检查可以在全新克隆的仓库中直接运行,无需额外配置。 ## 诚实的局限性 - 仅支持静态二进制文件。不支持动态链接器,不支持 PLT/GOT 解析。 - 仅支持 x86_64 的一个子集,其范围仅限课程程序 —— 既不是完整的指令集 (ISA),也不包含 SSE/AVX 矩阵。 - 不支持线程,不支持信号。 - 为帮助理解而构建,不追求极致速度。 这些都是项目范围的决定,在此明确声明,而不是让读者在日后自行发现。 ## 参考资料 语义遵循已发布的规范 —— ELF gABI 和 AMD64 psABI。规范的链接收集在 [docs/REFERENCES.md](docs/REFERENCES.md) 中;课程在每一章中都会引用它们,而不是要求你盲信这里的文字。 ## 起源 衍生自我早期编写的一个 Haskell 模拟器(CPUMewMew —— 一个带有 `--explain` 模式的 ELF 加载器,以及间隙分析)。此移植版本使用 Python 以提高可及性;其语义遵循相同的官方规范。 课程文本目前俄语版本更为完整;英语章节(`*.en.md`)正同步跟进。 ## 许可证 MIT —— 见 [LICENSE](LICENSE)。
标签:ELF64解析, Python, x86_64模拟器, 执行引擎, 无后门, 逆向工具, 逆向工程教学