请问一下,怎么样修改一个进程的页表项,使该进程访问另一个进程的内存。
有人告诉修改页表项的前20个bit,即修改MFN(机器页框号)可以达到目的。这可行吗?可行的话,应该怎么修改? 我这里有个参考建议,因为一个进程访问另外一个进行需要相应的权限,但你可以通过下面提过的建议进行修改:#include <asm/current.h>
void change_task(void)
{
struct mm_struct *mm = current->mmap;
mm->pgd = /* 这里写另外一个进程的 pgd 页表就可以 */;
}
回复 2# Buddy_Zhang1
current->mmap指向的是这个程序所在进程的mm_struct结构体吗?
回复 3# 云幻无心sky
不好意思写完之后没 check,下面为更正代码:
#include <linux/sched.h>
#include <asm/current.h>
struct task_struct *task;
struct mm_struct *mm;
task = current;
mm = task->mm;
mm->pgd = /* 另外一个进程的 pgd */;
页:
[1]