c - 使用 libfuzzer 在小端环境中对大端代码进行模糊测试
问题描述
我正在尝试使用 libfuzzer 模糊为大端 MIPS 架构编写的部分代码。
我在 Debian little endian 机器下运行了 libfuzzer,并发出了分段错误。我认为结果不是 100% 值得信赖的。如何将 libfuzzer 与模拟器一起用于大端架构?这可能吗?是否有任何其他技术可以通过使用模糊测试在小端架构中测试大端代码?
解决方案
您可以在主机上将您的软件交叉编译为大端 MIPS,然后使用 QEMU 用户模式仿真。在这种模式下,QEMU 在模拟 CPU 上运行单个进程,消除所有模拟硬件。相反,它只是将系统调用转换为主机内核,因此该进程可以访问所有主机文件、网络等——就像你的主机 CPU 能够执行 MIPS 指令一样——它现在可能会弄乱你的主机文件等,你已被警告。:)
我不是特别熟悉libfuzzer
,但是这个设置至少应该足以验证已经发现的崩溃(假设人们可以相信 QEMU 足够真实地模拟 MIPS CPU)。AFAIKlibfuzzer
是一个进程内 fuzzer,因此与 AFL 不同,fuzzed 进程不应该面临使用共享内存与单独的 fuzzer 进程通信等问题。
推荐阅读
- javascript - 显示/隐藏完整的 div
- c# - 如何将原生颜色选项(形状填充、轮廓和字体颜色)添加到 vsto 功能区?
- command-line - 使用 Acrobat 命令行打印 PDF 时如何在灰度/彩色之间进行选择?
- amazon-web-services - 无服务器框架错误:解压后的大小必须小于 262144000 字节
- python - 为具有执行 TCP/IP 通信的多个线程的类的多个实例发出信号
- python - 显示一定数量的情节
- python-3.x - 邮件合并失败并破坏白话草稿的草稿格式
- python - 模型字段值未在 Django 中更新
- c# - C#从Url中提取通配符域
- c# - 根据列值显示/隐藏 jQuery 数据表操作链接按钮