我有一个用户模式的进程和内核模块。 现在我想从内核读取usermode进程的某些区域,但是有一个问题:没有复制用户模式内存和VA简单访问。 所以我们有:task_struct的目标进程,其他相关的结构(如mm_struct,vma_struct)和虚拟地址,如0x0070abcd,我想要读取或更确切地映射到我的内核模块。
我可以使用get_user_pages获取所需内存区域的页面列表,但接下来呢? 我应该将页面以某种方式映射到内核中,然后尝试将它们作为连续内存区域读取,还是有更好的解决scheme?
“私人字节”不反映它。 如何find进程分配的确切内存?
pipe理私人堆
用jmap查找当前的堆大小
进程的虚拟地址范围
问题是“看”用户空间需要锁定大量的东西。 所以最好是做一个简短的复制,而不是把所有的东西锁定在任意的时间上。 您的用户空间进程可能不会被虚拟机映射到当前的cpu中。 实际上,它可能被完全交换到磁盘上,运行在另一个cpu上,在它自己的内核调用中等等。
Linux内核:copy_from_user – 带指针的结构
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。