我想制作一个内核模块,该模块可以扫描用户运行进程的内存并更改一些值。我在找出与用户内存进行交互的正确方法时遇到了一些麻烦。
我从IBM文章User space memory access from the Linux kernel中找到了copy_to_user
和copy_from_user
函数。但是它们采用了用户空间指针。由于我不确定要在哪里更改变量,因此我想扫描用户进程的内存,但似乎找不到方法。
我正在考虑读取地址的/proc/$(pidof process)/maps
,因为我要更改的变量位于共享对象中。但是,我在线阅读了从内核模块读取文件的好习惯。
我也在想,也许我可以绑定copy_from_user函数来复制整个内容,但是由于它确实很大,所以认为这不是一个好主意。
任何建议,将不胜感激。谢谢。
最佳答案
您要扫描内存的内容是什么,为什么不能仅从用户空间进行扫描呢?通过在proc中访问mem文件,可以轻松做到这一点。
至于问题的答案,恐怕这是如果您有理由这样做的一件事,那么您可以轻松地找到自己的方法。
关于c - 如何从内核模块扫描用户空间内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44603750/