繁体   English   中英

劫持linux中的实时时钟

[英]Hijacking the realtime clock in linux

我想编写一个劫持实时时钟(中断8)的LKM(Linux内核模块)。 所以我希望将中断设置为我的函数,并在某些时候将其发送回旧函数。

我试图使用request_irq函数没有任何成功,可能是因为那里的内核函数不愿意共享中断(这是一个很好的决定,我猜)。
根据我发现的一些页面,我还尝试编辑IDT(中断描述符表)。 他们没有工作,大多数甚至没有编译,因为他们为内核2.6编写,我正在使用3.10。

这是一个简化的代码,我只是想让你知道我在做什么。

kpage =__get_free_page( GFP_KERNEL);
asm("sidt %0": : "m"(*idtr) : );
memcpy(kpage, idtr, 256*sizeof(kpage));
newidt = (unsigned long long *)(*(unsigned long*)(idtr+1));
newidt[8] = &my_function;
asm("lidt %0": "=m"(newidt):);

我的所有尝试都是在分段故障的好时候结束,并且在内核崩溃的困难时期迫使我重新启动(幸运的是我使用虚拟机和快照)。

那么我怎么能劫持实时中断所以它能完成我的工作呢? (然后将其发送回原始函数以执行。)

是一些很好的代码来改变IDT上的pagefault函数。 我无法使它工作,因为它也是为内核2.6编写的。 这个问题也值得研究。

要获得赏金,请发布工作代码,或者至少提供足够的信息以使其运行。

这可以帮到你: http//cormander.com/2011/12/how-to-hook-into-hijack-linux-kernel-functions-via-lkm/

为什么不简单地挂钩一个像你想要的那样调用每个x步骤的函数并执行你需要的任何东西?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM