#1 楼
诸如Qemu或Bochs之类的工具从概念上讲与IMO十分相似,它们可以在包括内核在内的整个系统上使用。诸如BitBlaze和S2E之类的研究工作已使用Qemu的修改版本来跟踪内核模式组件以查找错误。我认为,关键的区别在于Qemu / Bochs作为整个系统仿真器不会像DBI那样默认呈现受检查程序的视图。默认情况下,DBI允许动态编辑程序。仿真器具有实现DBI所需的原语,它们可以读取和写入内存以及扩展程序代码,但是它们不提供PIN进行程序修改时所使用的API。
所以我能做的就是,您可以使用Qemu制作内核模式DBI,其他人也可以做到这一点,但是我不知道还有其他可用的方法。
评论
的确如此,但是正如DynamoRIO内核论文的简介中所述,在内核中进行DBI的一个重要原因是因为您要分析设备驱动程序。 QEMU等模拟的硬件范围相当有限。 S2E项目通过使用符号执行伪造丢失的设备输入来在该领域做了一些工作,但这不是万能的。可以在真实硬件上运行的真实内核DBI解决方案会更好。
–布伦丹·多兰·加维特(Brendan Dolan-Gavitt)
13年4月20日在17:33
哦,有一个叫做Simics的系统,您可以用Python或C编写设备驱动程序。我想知道它是否仍在出售。
–安德鲁(Andrew)
13年4月20日在20:26
评论
此处介绍了Linux。相关内容:stackoverflow.com/questions/8058005/…和DynamoRio开发人员对Mac OS X积极感兴趣(昨天更新):code.google.com/p/dynamorio/issues/detail?id=58
@joxeankoret:我建议将问题分成两部分,一个用于Windows,一个用于MacOSX。 vTune显然可以满足您的要求,所以我认为这是可能的。
@ 0xC0000022L我认为我们不需要拆分它。对于一个平台的答案超出了我的诚实期望。顺便说一句,据我所知,vTune不支持Windows内核级别的检测,对吗?
只是绕道而行而不是dbi框架的另一个有趣之处就是NCodeHook。进入内核空间需要做一些工作,但不需要太多。