3

我正在为我的操作系统课程编写一个 rootkit(老师可以接受我在这里寻求帮助)。我的 rootkit 挂钩 sys_read 系统调用以向用户隐藏“魔法”端口。当我将用户缓冲区 *buf(sys_read 的参数之一)复制到内核空间(到名为 kbuf 的缓冲区中)时,我得到内核恐慌/核心转储错误。这可能只是因为中断读取导致系统停止运行,但我想知道是否有人对此有任何看法。

该代码可在线获取。看第 207 行:https ://github.com/joshimhoff/toykit/blob/master/toykit.c

我连接了 getdents 并使用 copy_from_user 将 getdents 结构带入内核空间,效果很好!我不确定阅读有什么不同。

谢谢您的帮助!

4

1 回答 1

1

我想到了。我调用了实际的 sys_read 函数并没有检查返回值。有时表示错误是否定的。我没有提前失败,而是要求 kmalloc 提供负数的字节数。

设想。分配负内存。那将是一个疯狂的世界。

于 2013-05-09T01:51:21.393 回答