如何在 Linux 内核空间中使用 DynamoRIO 或类似的东西?
逆向工程
工具
动态分析
发电机
2021-07-03 06:24:31
3个回答
是的,有 DynamoRIO Kernel (DRK),它是由多伦多大学 (U of T) 的 Peter Feiner 创建的 DynamoRIO (DR) 端口。当前DR源树;然而,不包含DRK,尽管存在一个分支。DRK 尚未开源,多伦多大学正在积极使用 DRK 和新的 DBT 框架进行内核 DBT 研究。
如果您正在考虑自己移植它,那么两个主要挑战是:
- 中断以及它们如何与代码缓存交互。DRK 采取了“直接端口”的方法。例如,DR 使用线程私有代码缓存,DRK 使用 CPU 私有代码缓存。这导致了很多麻烦,包括透明度和中断。
- 您想要什么级别的透明度。DR 的设计考虑了很多透明度,DRK 信守了这一承诺。到目前为止,我在内核检测方面的经验是,它表现得非常好(除非您关心一小部分设备驱动程序)。可以牺牲几个方面的透明度,但这在一般 DR 框架内更具挑战性。
DynamoRIO Google Code 项目中有一个分支叫做“DRK”,commit 1323有日志消息“DRK: DynamoRIO as a Linux kernel module”。这应该包含您正在寻找的代码,但因为在我无法保证之前我没有使用过 DynamoRIO。