能力值:
( LV2,RANK:10 )
|
-
-
2 楼
帖子不错。楼主你测试一下调用门中断门在win10是否可以用?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
mark下,回头慢慢研究,读取物理内存数据应该是很多地方都会用到的
|
能力值:
( LV8,RANK:130 )
|
-
-
5 楼
very good
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
我就喜欢这种言简意赅的文章。
最后于 2020-4-6 15:10
被tdsss编辑
,原因:
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
学习了,感谢分享
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
谢谢分享,留个mark
|
能力值:
( LV12,RANK:290 )
|
-
-
9 楼
代码很骚,只不过这内存没法确保有效性,有蓝屏概率
|
能力值:
( LV4,RANK:52 )
|
-
-
10 楼
FaEry
代码很骚,只不过这内存没法确保有效性,有蓝屏概率
一般情况下这种PTE都是可写的吧?实在不行就只能在低IRQ的时候请求了。。
|
能力值:
( LV12,RANK:290 )
|
-
-
11 楼
不对
一般情况下这种PTE都是可写的吧?实在不行就只能在低IRQ的时候请求了。。
DPC_LEVEL访问PagedOut容易炸,低Level下可以,UserMode用__try__except包着,KernelMode用MmIsAddressValid包着 就很稳...
最后于 2020-4-13 09:55
被FaEry编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
感谢分享
|
能力值:
( LV4,RANK:52 )
|
-
-
13 楼
FaEry
不对
一般情况下这种PTE都是可写的吧?实在不行就只能在低IRQ的时候请求了。。
DPC_LEVEL访问PagedOut容易炸,低Level下可以,Us ...
当时考虑过这个问题,我申请的那个页面是永驻的,所以应该不会被换出,然后是当前Cr3存在的情况下,系统肯定是帮忙挂载好了对应的物理地址,所以应该访问也没有啥问题,唯一的缺点就是不知道是否可写,不知道我这样理解对不对
|
能力值:
( LV5,RANK:60 )
|
-
-
14 楼
代码有漏洞,在配置高容量内存条的机子上,MmAllocateContinguousMemory申请的页可能处于2M大分页或1G大分页中,此时的PTE要么清零要么根本不存在,楼上说的概率蓝屏应该指的就是这种情况
|
能力值:
( LV4,RANK:52 )
|
-
-
15 楼
hhkqqs
代码有漏洞,在配置高容量内存条的机子上,MmAllocateContinguousMemory申请的页可能处于2M大分页或1G大分页中,此时的PTE要么清零要么根本不存在,楼上说的概率蓝屏应该指的就是 ...
受教了,是否可以使用ExAllocatePool来进行替换呢?
|
能力值:
( LV5,RANK:60 )
|
-
-
16 楼
不错的贴子!从WIN10系统开始提供了:MmMapIoSpaceEx,还没有试过, 马上试下!如果适用,就逆一下。
|
能力值:
( LV5,RANK:60 )
|
-
-
17 楼
不对
[em_67]受教了,是否可以使用ExAllocatePool来进行替换呢?
ExAllocatePool虽然在长度≥0x1000的时候也是页对齐,但和Mmxxx一样拥有内存充足下优先分配大分页的特点,最好的方案是参考我之前某篇帖子的思路,MmAllocatexxx只用于分配建立新PML4T和PDPT页表项内容的内存,在PML4T的512项里面选一项占坑,把想访问的虚拟地址直接往这里做拷贝,如果是访问物理地址,直接在这里面找一项未使用的PTE填充物理页帧号\有效位\可写位,再刷tlb就稳得一批了。因为这个连续空间已经被自己占坑,你完全不用担心操作系统会动你映射的内容。
|
能力值:
( LV5,RANK:60 )
|
-
-
18 楼
我帖子里也有计算大分页情况下拿到MmAllocxxx和ExAllocxxx申请到的物理页帧号的代码,主要是利用了操作系统申请大分页时页帧号和虚拟页帧号对齐的特点,当然也可以MmGetPhysicalForVirtual(不喜欢用这个,没准哪天就变成MmMapIoSpace一样的下场了)
|
能力值:
( LV4,RANK:52 )
|
-
-
19 楼
hhkqqs
ExAllocatePool虽然在长度≥0x1000的时候也是页对齐,但和Mmxxx一样拥有内存充足下优先分配大分页的特点,最好的方案是参考我之前某篇帖子的思路,MmAllocatexxx只用于分配建 ...
理解你的意思了,你是从PML4T的位置就开始替换成自己的了,受教了! ,我去改进一下思路
|
能力值:
( LV5,RANK:60 )
|
-
-
20 楼
不对
理解你的意思了,你是从PML4T的位置就开始替换成自己的了,受教了![em_13],我去改进一下思路 如果只是简单地访问某个物理页,直接申请一页内存,第一项填一个Valid和LargePage位为1的PDPT项,按你的需求给Dirty1(Intel's R/W bit)和NoExecute置位,物理页帧号填你要访问的页帧号。再把申请的这页内存的物理页帧号填进某个没使用的PML4T里面,再刷下TLB,你就能随意使用从你想用的物理页开始,长度为1G的物理内存了。我原帖干的很多事都是映射已有的虚拟地址,稍微补充下就能做到既映射已有虚拟地址也映射物理地址了
最后于 2020-10-20 14:37
被hhkqqs编辑
,原因:
|
能力值:
( LV4,RANK:52 )
|
-
-
21 楼
hhkqqs
不对
理解你的意思了,你是从PML4T的位置就开始替换成自己的了,受教了![em_13],我去改进一下思路 如果只是简单地访问某个物理页,直接申请一页内存,第一 ...
学习了!我这就去研究研究!
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
好贴
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
学习了~~,评论也很精彩。。。
|
能力值:
( LV5,RANK:60 )
|
-
-
24 楼
hhkqqs
代码有漏洞,在配置高容量内存条的机子上,MmAllocateContinguousMemory申请的页可能处于2M大分页或1G大分页中,此时的PTE要么清零要么根本不存在,楼上说的概率蓝屏应该指的就是 ... 是否可以这样理解: 9-9-9-9-12 PTE: 2的12次方=4KB字节小分页,可描述(2的36次方=64G)个4KB字节小分页 PDE: 2的21次方=2MB字节大分页,可描述(2的27次方=128M)个2MB字节大分页 PPE: 2的30次方=1GB字节大分页,,可描述(2的18次方= 256K)个1GB字节大分页 PXE: 2的39次方=512GB字节大分页,可描述(2的9次方=512)个512GB字节大分页 不过最后1个似乎没有看到过。64位系统中物理地址为48位,理论上物理内存最大可为 2的48次方=256TB字节. 目前在windows分页管理方面才刚开始学习了解,上述纯属数学推导,别见笑哈!
最后于 2021-2-5 18:13
被低调putchar编辑
,原因:
|
能力值:
( LV5,RANK:60 )
|
-
-
25 楼
低调putchar
hhkqqs
代码有漏洞,在配置高容量内存条的机子上,MmAllocateContinguousMemory申请的页可能处于2M大分页或1G大分页中,此时的PTE ...
没错,512G分页对配置要求太高了估计一般人接触不到
|
|
|