主要观点总结
文章介绍了一个模糊测试工具的开发过程,该工具通过加载Bochs模拟器并在沙盒中执行其逻辑,实现对任意复杂目标的快照模糊测试。文章还探讨了将Bochs从系统调用中沙盒化的概念,并详细描述了如何通过Rust和C库实现上下文切换。在Bochs中,系统调用被重定向到Lucid,一个模拟内核功能的引擎。同时,文章还探讨了使用Musl C库以简化处理过程,并实现了执行上下文跟踪和改造Musl的系统调用。最后,文章描述了如何优雅地返回到Bochs,并总结了项目的下一步工作。
关键观点总结
关键观点1: 模糊测试工具的开发
通过加载Bochs模拟器并在沙盒中执行其逻辑,实现对任意复杂目标的快照模糊测试。
关键观点2: 沙盒化Bochs
探讨了将Bochs从系统调用中沙盒化的概念,并详细描述了如何通过Rust和C库实现上下文切换。
关键观点3: 使用Musl C库
使用Musl C库以简化处理过程,并实现了执行上下文跟踪和改造Musl的系统调用。
关键观点4: 优雅地返回
描述了如何优雅地返回到Bochs,并总结了项目的下一步工作。
文章预览
一 介绍 如果你还不知道,我们最近在博客上开发了一个模糊测试工具。我甚至不确定“模糊测试器”这个词是否合适来形容我们正在构建的东西,它几乎更像是一个暴露钩子的执行引擎?无论如何,如果你错过了第一集,你可以在 这里 ( https://h0mbre.github.io/New_Fuzzer_Project/ )补上。我们正在创建一个模糊测试器,它将一个静态构建的Bochs模拟器加载到自身中,并在为Bochs维护一个沙盒的同时执行Bochs的逻辑。 你可以这样理解:我们实在太懒了,不想从零开始实现自己的x86_64模拟器,所以我们就直接把一个完整的模拟器塞进了我们自己的进程中来使用。模糊测试器是用Rust编写的,而Bochs是一个C++代码库。Bochs是一个完整的系统模拟器,因此设备和其他所有东西都只是在软件中模拟的。对我们来说,这很棒,因为我们可以简单地对Bochs本身进行快照和恢
………………………………