我正在尝试使用libfuzzer来模糊为大型字节序MIPS架构编写的代码。
我已经在Debian小型字节序机下运行libfuzzer,并且发出了分段错误。我认为结果不是100%可信赖的。如何将libfuzzer与仿真器一起用于大型字节序体系结构?这可能吗?是否还有其他技术可以通过模糊测试在小端架构中测试大端代码?
答案 0 :(得分:0)
您可以将软件交叉编译为主机上的big-endian MIPS,然后使用QEMU用户模式仿真。在这种模式下,QEMU在仿真CPU上运行单个进程,从而消除了所有仿真硬件。取而代之的是,它仅将系统调用转换为主机内核,因此该进程可以访问所有主机文件,网络等。就像您的主机CPU能够执行MIPS指令一样,现在它也可能会破坏您的主机文件等。您已经被警告过。 :)
我对libfuzzer
并不特别熟悉,但此设置至少足以验证已经发现的崩溃(假设人们可以相信QEMU足够真实地模拟MIPS CPU)。 AFAIK libfuzzer
是一个进程内的模糊器,因此与AFL不同,模糊处理在使用共享内存等与单独的模糊器进程进行通信时应该不会遇到一些问题。