能力值:
( LV2,RANK:10 )
|
-
-
26 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
学习学习
|
能力值:
( LV4,RANK:50 )
|
-
-
28 楼
感谢分享。
|
能力值:
( LV3,RANK:30 )
|
-
-
29 楼
感谢你的贡献,论坛因你而更加精彩!
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
学习
|
能力值:
( LV3,RANK:20 )
|
-
-
31 楼
1
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
学习学习
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
学习学习
|
能力值:
( LV1,RANK:0 )
|
-
-
34 楼
学习学习
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
学习学习
|
能力值:
( LV1,RANK:0 )
|
-
-
36 楼
学习学习
|
能力值:
( LV1,RANK:0 )
|
-
-
37 楼
UObjectBaseInit
|
能力值:
( LV1,RANK:0 )
|
-
-
38 楼
MiGetPfnPidSafe(__int64 a1, unsigned int a2) 参数二如果传1 会走MiGetLeafPfnBuddy 最后bsod 需要根据需要传入标志
最后于 2025-8-6 15:23
被Zi_kiki编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
Zi_kiki
MiGetPfnPidSafe(__int64 a1, unsigned int a2) 参数二如果传1 会走MiGetLeafPfnBuddy 最后bsod 需要根据需要传入标志
MiGetPageTablePfnBuddyRaw返回的就是直接的EPROCESS对象地址,MiGetPfnPidSafe参数2传1的确是走MiGetLeafPfnBuddy,系统不同这里的参数2标志位好像也不同 我测试另外一个系统版本 参数写2是走MiGetLeafPfnBuddy ,所以具体写1还是2 还得看情况,还有就是个人不推荐调用MiGetPfnPidSafe ,MiGetPageTablePfnBuddyRaw其实就已经最好用的了,直接走算法把 哈哈 简单粗暴 //W11 u1 = ((((EPROCESS >> 1) | (0x80000000)) - 1) * 0x10) | (eproc & 0xFFFFFFF000000000); if (u1 == eproc) { dribase = i << PAGE_SHIFT; break; } 这套是最新的算法 0401ffffh是固定的值 所以不需要从mmpfn结构中读取这个数值,另外0xffffad8000000000这个地址 通过EPROCESS对象地址能运算得出 也不需要读地址表了
|
能力值:
( LV1,RANK:0 )
|
-
-
40 楼
非常支持你的观点!
|
能力值:
( LV1,RANK:0 )
|
-
-
41 楼
学习学习
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
学习学习
|
能力值:
( LV1,RANK:0 )
|
-
-
43 楼
恐怖如斯 这个也开
|
能力值:
( LV1,RANK:0 )
|
-
-
44 楼
1
|
能力值:
( LV1,RANK:0 )
|
-
-
45 楼
学习学习
|
能力值:
( LV1,RANK:0 )
|
-
-
46 楼
学习学习
|
能力值:
( LV1,RANK:0 )
|
-
-
47 楼
学习
|
能力值:
( LV1,RANK:0 )
|
-
-
48 楼
我也要抓紧学习
|
能力值:
( LV1,RANK:0 )
|
-
-
49 楼
学习学习
|
能力值:
( LV3,RANK:20 )
|
-
-
50 楼
1
|
|
|