首页
社区
课程
招聘
[讨论][转帖][讨论][原创]windows Hook内核api,能过win10 22H2的pg
2023-12-6 17:35 7514

[讨论][转帖][讨论][原创]windows Hook内核api,能过win10 22H2的pg

2023-12-6 17:35
7514
收藏
点赞8
打赏
分享
最新回复 (35)
雪    币: 2
活跃值: (392)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
饥愚 2023-12-19 18:12
26
0
我之前就写过这样的页表隔离的方式,但我发现有的机子包括我的机子会蓝,是运行了一段时间蓝的,并且你这还不完整,但我细节都处理了,还是会报PAGE_FAULT_IN_NONPAGED_AREA。但有的机子用很长时间都不会。你没有遇见过吗?
雪    币: 307
活跃值: (670)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_maiyudos 2023-12-20 00:23
27
0

我win10是专门针对2mb大页,win7是专门针对4kb小页的,蓝屏的原因我只能想到是因为没有做大页和小页的处理了。你做了2mb和4kb之类的处理吗,还有2mb的大页的物理地址要2mb对齐,不然电脑会卡死,我win10蓝屏的原因就是因为没有物理地址2mb对齐,我这代码是专门针对我那个虚拟机的环境,其他环境蓝屏你要是懂分页的话自己就会处理了。最重要的细节就是物理地址要对齐,2mb就2mb的对齐,1gb就1gb的对齐。

最后于 2023-12-20 00:26 被mb_maiyudos编辑 ,原因:
雪    币: 615
活跃值: (445)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
ugvjewxf 2023-12-20 14:52
28
0
思路不错,HOOK只对当前进程有效。 只要不去HOOK pid=4的进程就能过PG检测。看来PG是在当前进程PID=4的进程下面做的HOOK检测。 驱动内核代码不会进你的HOOK。
雪    币: 149
活跃值: (2058)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
saloyun 2023-12-21 14:40
29
0
实验确实可以。楼主牛啊。
雪    币: 3
活跃值: (466)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
拉闸太子 2023-12-21 16:32
30
0
该说不说 楼主还是很愿意帮助人的  
雪    币: 35
活跃值: (1756)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shuwoa 2024-1-1 01:30
31
0

早就试过了花了一个星期写了一份相对完善的代码,但是因为这个东西有个无法解决的大坑所以导致根本用不了.
第一,系统页的pml4是共享的如果你抽出某个一级页表,那么在用户态进入内核态后由于这个一级页后面的三级子页与系统原先的共享页不同步会导致某些后来系统申请的页空缺,进而产生偶然性的访问异常,我尝试过在某些创建页表的函数后面进行页指针同步,但是根本不能同步完美,除非接管系统的缺页异常,在缺页时候进行同步,那么这跟直接干pg还有啥区别,再弄下去舍近求远了

最后于 2024-1-1 01:32 被shuwoa编辑 ,原因:
雪    币: 307
活跃值: (670)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_maiyudos 2024-1-1 22:18
32
0


最后于 2024-1-1 22:21 被mb_maiyudos编辑 ,原因:
雪    币: 307
活跃值: (670)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_maiyudos 2024-1-1 22:21
33
0
shuwoa 早就试过了花了一个星期写了一份相对完善的代码,但是因为这个东西有个无法解决的大坑所以导致根本用不了.第一,系统页的pml4是共享的如果你抽出某个一级页表,那么在用户态进入内核态后由于这个一级页后面的三 ...
你改的时候开了中断没
雪    币: 35
活跃值: (1756)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shuwoa 2024-1-6 05:26
34
0
我前面说的不够清楚 , 首先内核页都是共享的,假如我抽出来一条pml4e  那么就代表这个process的512*512*512张内核页会从系统共享页中剥离,但是我们剥离了之后那些原内核页还是在正常创建与读写的,这时候很多函数会以为我们还是在使用系统的内核页,而当被剥离进程的某些NT函数之中的代码去访问那些域外的地址时候就会异常,因为它属于在一个私有的pml4之中,并不存在域外的页映射,比如NtCreateSection 之类的函数。
雪    币: 307
活跃值: (670)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_maiyudos 2024-1-9 01:24
35
0
shuwoa 我前面说的不够清楚 , 首先内核页都是共享的,假如我抽出来一条pml4e 那么就代表这个process的512*512*512张内核页会从系统共享页中剥离,但是我们剥离了之后那些原内核页还是在正常创 ...
刷新一下cr3,刷新一下缓存应该会有用的,之前我在学32位系统内核时改了pde和pte的属性,然后发现改了之后和没改一样,然后刷新了刷新了cr3就成功了。不知道你说的是不是隔离了之后缓存没有刷新导致的问题。
雪    币: 307
活跃值: (670)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_maiyudos 2024-1-9 01:29
36
0
shuwoa 我前面说的不够清楚 , 首先内核页都是共享的,假如我抽出来一条pml4e 那么就代表这个process的512*512*512张内核页会从系统共享页中剥离,但是我们剥离了之后那些原内核页还是在正常创 ...
而且我看别人的操作都是进程一创建就立马修改,我看别人hook NtCreateFile这样的高频函数没有大问题,已经用这个干非常有名的fps游戏了,很稳定。
游客
登录 | 注册 方可回帖
返回