Google 知名漏洞研究人员 Tavis Ormandy 开源了一个可以将 Windows DLL 加载到 Linux 的库loadlibrary,该库允许原生 Linux 程序从 Windows DLL 加载和调用函数。
库中包含一个自 ndiswrapper 派生的自定义 PE/COFF 加载器。该库将处理重定位和导入,并提供类dlopenAPI。
Tavis 表示,Windows 上的分布式、可扩展的模糊测试可能具有挑战性且效率低下。对于使用跨内核和用户空间的复杂互连组件的端安全产品尤其如此。这通常需要颠覆整个虚拟化的 Windows 环境以对其进行模糊测试。但是在 Linux 上,这不是什么大问题,如果可以将 Windows 杀毒软件的组件移植到 Linux,那么就可以在最小的容器中运行测试代码,而开销却很小,并且可以轻松地扩展测试范围。
loadlibrary 的目的是允许在 Linux 上对自包含的 Windows 库进行可扩展和有效的模糊测试,包括视频编解码器、解压缩库、病毒扫描程序与图像解码器等。可以进行:
·C++ 异常调度和释放。
·从 IDA 加载其它字符。
·使用 gdb、断点、堆栈跟踪等进行调试
· 运行时 hook 和补丁。
·支持 ASAN 和 Valgrind 以检测细微的内存损坏错误。
作为演示,Tavis 目前已经将 Windows Defender 移植到了 Linux。