在linux中劫持实时时钟

 Leeeeeee7777777 发布于 2023-02-12 14:53

我想编写一个劫持实时时钟(中断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编写的.这个问题也值得研究.

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

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有