能力值:
( LV2,RANK:10 )
|
-
-
26 楼
TP的CR3是假的,从根本上解决这种读写了
|
能力值:
( LV3,RANK:30 )
|
-
-
27 楼
看不懂啊,努力学吧
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
切换了cr3之后你代码里与地址有关的部分其实都有可能出错。比如你切换前后,函数调用栈ss:esp对应的栈内存都可能不是同一块区域了,因为栈的线性地址可能映射到另一块物理内存去了。
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
其实可以不用切CR3就能读任何进程的内存,在64位环境下比32位环境下更加方便,我最近有空时候正在整理这个代码,不过人比较懒还没有完工而已,到时候给大家分享下我的工程
|
能力值:
( LV4,RANK:50 )
|
-
-
30 楼
先mark一波,以后来学习
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
char* szRing0Buf = (char*)MmAllocateNonCachedMemory(dwBufSize); 从cr3切换回来后,这里的虚拟地址指向的物理地址不应该也会变化吗?有点不理解 求解答。。。
|
能力值:
( LV9,RANK:280 )
|
-
-
32 楼
除Session Space外,所有内核内存的虚拟地址映射(比如你说的MmAllocateNonCachedMemory分配的内存),在所有进程的页表上都是一样的(前提是不启用页表隔离机制)
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
hzqst
除Session Space外,所有内核内存的虚拟地址映射(比如你说的MmAllocateNonCachedMemory分配的内存),在所有进程的页表上都是一样的(前提是不启用页表隔离机制)
谢谢大佬解答
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
谢谢 学习了 谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
牛
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
mark一下
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
曾逆向过一个杀进程工具,是利用某签名驱动读写物理内存的IoControl给自己LimitQuery权限的进程句柄提高访问权限,从而达到杀进程目的。
|
能力值:
( LV4,RANK:50 )
|
-
-
38 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
好六的教程
|
能力值:
( LV3,RANK:30 )
|
-
-
40 楼
向大佬学习
|
能力值:
( LV1,RANK:0 )
|
-
-
41 楼
你这个办法碰到缺页问题就炸了,KeAttachProcess()的底层实现不止一个切换CR3
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
农村小伙
TP的CR3是假的,从根本上解决这种读写了
请问TP的CR3是假的,那他自己该怎么访问内存呢?小白不懂
|
能力值:
( LV4,RANK:50 )
|
-
-
43 楼
切换CR3之后,调用MmAllocateNonCachedMemory(dwBufSize); 分配在还原回CR3还能访问吗?
|
能力值:
( LV8,RANK:130 )
|
-
-
44 楼
好
|
能力值:
( LV1,RANK:0 )
|
-
-
45 楼
对TP无效吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
mark
|
|
|