首页
社区
课程
招聘
[原创]共建美好论坛 分享代码 从我做起
发表于: 2019-9-9 17:11 5560

[原创]共建美好论坛 分享代码 从我做起

2019-9-9 17:11
5560
前段时间因为热衷于对技术的研究 用IO设备通信 整了个DNF的读写   :)
发现win7 这函数居然MmCopyVirtualMemory读不到真内存(IDT真恶心  口区)
但是直接MDL能直接读到(不要问我为什么不直接MDL读 因为太菜了 不会写)

dalao:既然MDL能直接读到为啥用 MmCopyVirtualMemory呢
我:因为 MmCopyVirtualMemory 确实挺方便的  mdl还要自己处理异常
dalao:那就给个try不就完了
我:......好的 我(C)爱(N)你(M)

大家用CE的时候也会发现 就算恢复了权限  也还是读不到内存  (这个时候把页表恢复就能直接CE读取真内存了)
这是因为IDT保护 他只会给游戏进程和System进程的线程读真页表
如果不是他就会给假页表给你读(最恶心的是假页表还有数据  让你以为自己很行的亚子)
把当前线程的 _ETHREAD.Cid.ProcessID改成4 或者游戏PID 就IDT就会给你真页表了


代码:

 温馨提示:
          不要用MmIsAddressValid这个函数来判断游戏地址的有效性 有地址就是莫名其妙的缺页 他就返回失败了

这样就能读到了 因为mdl需要异常处理  这个函数不需要 有的时候用不了异常处理 就只能用这个函数来读取了
代码执行完记得把ID恢复回去 不然回到R3会炸
还有为啥mdl就能读到真内存呢..他不是页表都给的是假的吗 真奇怪 

PS : 共建美好论坛 分享代码 从我做起  我爱分享 我爱论坛 :)









[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-9-9 17:16 被不吃麻婆豆腐编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (4)
雪    币: 222
活跃值: (185)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
2
我要代理
2019-9-9 17:33
0
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
大佬可以加个QQ吗有问题要请教
2020-6-17 12:38
0
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
666
2020-6-17 15:34
0
雪    币: 12364
活跃值: (5889)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
大动干戈钩了0e,判断线程身份写的这么草率
2020-10-14 22:51
0
游客
登录 | 注册 方可回帖
返回
//