首页
社区
课程
招聘
未解决 [讨论]关于进程挂靠的疑问,求大佬解惑
发表于: 2019-5-6 15:12 2547

未解决 [讨论]关于进程挂靠的疑问,求大佬解惑

2019-5-6 15:12
2547
改完CR3之后,我们可以访问其他进程里面的内存,但是我有一个问题就是,我们的EIP指针指向的内存地址也需要翻译,因为CR3都改了,EIP也被翻译到另外一个进程的一个内存里面了,那么指令肯定是错误或者根本没有这个内存? 思考之后,我觉得翻译肯定是翻译了,但是要求进程挂靠整个过程在R0完成,每个用户进程在内核态用的是同一份物理地址,同一份虚拟地址,同一份PTE,尽管改了PDE,但是不同进程在R0下用的虚拟地址都是一样的,翻译的物理地址也是一样的,所以尽管改了CR3,并不会导致EIP的指针地址翻译到奇怪的地方?

下面是我的猜想,读取另一个进程的内存数据就是,进入R0,改CR3,把需要的用户态数据复制一份到内核的一个地方(不同进程这个地方都是一样的,CR3改了也不会导致虚拟地址翻译到其他地方),改回CR3,把内核之前拷贝的数据拷贝到用户指定的地址。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1641
活跃值: (3601)
能力值: (RANK:15 )
在线值:
发帖
回帖
粉丝
2
内核空间是共享的,你还能有几个内核空间?
你从当前用户线程切换cr3以后便无法访问曾经的用户内存了,直到你把cr3改回来,但是可以访问内核空间
2019-5-6 16:33
0
雪    币:
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
疑点是切换了CR3,所有虚拟地址翻译都会变,EIP也是用的虚拟地址,那么指令地址怎么正确翻译
2019-5-6 17:12
0
雪    币: 75
活跃值: (618)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
 1楼已经说了很清楚啦,改CR3只是改变了进程的用户地址空间映射,内核地址空间所有进程都是一样的。而改
CR3时,eip肯定是内核空间,所有改了CR3,并不会对当前的eip指令产生什么影响
2019-5-6 17:38
0
雪    币:
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习了,谢谢大佬
2019-5-6 17:42
0
游客
登录 | 注册 方可回帖
返回
//