c - 如何从内核模块扫描用户空间内存

标签 c linux memory-management module kernel

我想制作一个内核模块,该模块可以扫描用户运行进程的内存并更改一些值。我在找出与用户内存进行交互的正确方法时遇到了一些麻烦。

我从IBM文章User space memory access from the Linux kernel中找到了copy_to_usercopy_from_user函数。但是它们采用了用户空间指针。由于我不确定要在哪里更改变量,因此我想扫描用户进程的内存,但似乎找不到方法。

我正在考虑读取地址的/proc/$(pidof process)/maps,因为我要更改的变量位于共享对象中。但是,我在线阅读了从内核模块读取文件的好习惯。

我也在想,也许我可以绑定copy_from_user函数来复制整个内容,但是由于它确实很大,所以认为这不是一个好主意。

任何建议,将不胜感激。谢谢。

最佳答案

您要扫描内存的内容是什么,为什么不能仅从用户空间进行扫描呢?通过在proc中访问mem文件,可以轻松做到这一点。

至于问题的答案,恐怕这是如果您有理由这样做的一件事,那么您可以轻松地找到自己的方法。

关于c - 如何从内核模块扫描用户空间内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44603750/

相关文章:

c - 指向c中变量的低字节地址

检查二叉树中的子代求和属性

python - 我可以包装 windows dll 以在 Linux 下的 Python 中使用它吗?

ios - 奇怪和陌生的内存行为

C 洗牌二维数组

c - 在 C 头文件中将注释放在首位有什么坏处吗?

c - 如何选择缓冲区大小?

java - Hudson 无法使用 unix 用户/组进行身份验证

linux - 在 linux 内核中,对 kfree 的调用会休眠吗?

c# - .NET Framework 中的哪些托管类分配(或使用)非托管内存?