1
因此,可以说我有机会获得一个过程,它的mm_struct一个用户进程更改页面映射,是没有办法,我可以改变映射的一个或删除的映射,并创建一个临时的,这样的方式我可以分配一个小于一页的数量,并写入内存?在Linux内核中
例如,在ADD指令上处理写入错误。我可以相对容易地得到错误的地址和大小。我在本地分配8个字节(最大的单个指令大小)并且映射混乱,使得故障的虚拟地址指向这8个字节的第一个字节。然后单步执行指令以获取用于其他页面的数据,然后将原始页面还原到映射。我只是好奇,是否可以在虚拟内存区域中使用除页面以外的其他内容。
这是真的,因为内存开销并不是很大,因为它只有4或8k的页面大小,即使最多只能使用前8个字节。作为一个旁注,你会碰巧知道单步执行用户空间指令(显然是从内核空间)的最简单方法吗? –
@Jesus:我不知道确切的,但我会首先查看['ptrace()'](http://linux.die.net/man/2/ptrace)中使用的代码来实现' PTRACE_SINGLESTEP'请求。 – Karmastan