紫水晶编程技术论坛 - 努力打造成全国最好的编程论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4896|回复: 18

R0 - R3通讯问题

  [复制链接]

5

主题

50

帖子

0

精华

铜牌会员

Rank: 2Rank: 2

积分
105
发表于 2021-4-27 11:30:43 | 显示全部楼层 |阅读模式
微软提供的通讯方式是利用IRP进行R0R3数据交互,出于实验,我自己也做了个通讯,
1.修改R0的分页属性,让R3能够直接读取R0内存
2.R0创建个线程循环,用于接收R3的数据,达到交互的目的

问题:
1.内核线程死循环占用较高,直接占满了一个核心,能否优化呢
2.多线程问题,R3多线程和R0交互,有很多问题,容易蓝屏

851

主题

3477

帖子

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

Rank: 125Rank: 125Rank: 125Rank: 125Rank: 125

积分
37093
发表于 2021-4-27 16:53:22 | 显示全部楼层
0、我很好奇你是怎么样使得应用程序可以直接读取内核内存的(除非你用的是XP)。

1、在循环里调用KeDelayExecutionThread

2、一般非标准方式通信还可以使用内核CALLBACK(比如注册表CALLBACK)。

5

主题

50

帖子

0

精华

铜牌会员

Rank: 2Rank: 2

积分
105
 楼主| 发表于 2021-4-27 21:58:26 | 显示全部楼层
Tesla.Angela 发表于 2021-4-27 16:53
0、我很好奇你是怎么样使得应用程序可以直接读取内核内存的(除非你用的是XP)。

1、在循环里调用KeDelayE ...

0.修改线性地址的分页属性,修改U/S位,这是保护模式的知识
2.我对通讯的访问次数很高,每秒几十万次,而内核函数为了防止重入,我加了锁,导致了我单线程死循环访问内核一个函数时没问题,第二个线程同时访问同一个内核函数时在锁外进不去,目前我自己的解决方法是内核写两个相同功能函数,不同线程访问不同函数,比较傻

5

主题

50

帖子

0

精华

铜牌会员

Rank: 2Rank: 2

积分
105
 楼主| 发表于 2021-4-27 22:04:31 | 显示全部楼层
Tesla.Angela 发表于 2021-4-27 16:53
0、我很好奇你是怎么样使得应用程序可以直接读取内核内存的(除非你用的是XP)。

1、在循环里调用KeDelayE ...

关于你的第一点疑惑可以参考这个,在x64下修改线性地址的分页属性可以让R3读R0内存,https://www.cnblogs.com/lanrenxinxin/p/4735027.html

851

主题

3477

帖子

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

Rank: 125Rank: 125Rank: 125Rank: 125Rank: 125

积分
37093
发表于 2021-4-28 05:45:44 | 显示全部楼层
blackbox 发表于 2021-4-27 21:58
0.修改线性地址的分页属性,修改U/S位,这是保护模式的知识
2.我对通讯的访问次数很高,每秒几十万次,而 ...


游客,如果您要查看本帖隐藏内容请回复

5

主题

156

帖子

0

精华

铜牌会员

Rank: 2Rank: 2

积分
114
发表于 2021-4-28 20:05:57 | 显示全部楼层

76

主题

267

帖子

9

精华

贵宾会员

Rank: 2Rank: 2

积分
15599
发表于 2021-4-28 21:29:42 | 显示全部楼层
改页表你不管PatchGuard么

5

主题

50

帖子

0

精华

铜牌会员

Rank: 2Rank: 2

积分
105
 楼主| 发表于 2021-4-28 23:07:31 | 显示全部楼层
Tesla.Angela 发表于 2021-4-28 05:45
**** 本内容被作者隐藏 ****

不是,学了保护模式就想做点项目练手加固记忆,正好吹水群大佬说内核线程通讯缺陷很多,就想练练手了,目前就只有多线程的问题了

5

主题

50

帖子

0

精华

铜牌会员

Rank: 2Rank: 2

积分
105
 楼主| 发表于 2021-4-28 23:09:30 | 显示全部楼层
tangptr@126.com 发表于 2021-4-28 21:29
改页表你不管PatchGuard么

改页表不PG吧

5

主题

50

帖子

0

精华

铜牌会员

Rank: 2Rank: 2

积分
105
 楼主| 发表于 2021-5-26 14:37:21 | 显示全部楼层
经过实验,改页表属性不行,找个一个月的BUG
1.我自己电脑没问题,但是大部分系统会改页表属性,如果自己强制死循环改页表属性就会蓝屏,
2.然后我又想到自己挂PTE,但是现在很多电脑都是大内存,很可能分的页表都没PTE和PDE,我并没有思路解决
3.最后老实点用系统的MDL映射一个地址,然后传给R3进行通信吧
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

手机版|Archiver|紫水晶工作室 ( 粤ICP备05020336号 )

GMT+8, 2024-3-29 13:42 , Processed in 0.026930 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表