首页
论坛
专栏
课程

[原创]近些年踩过的坑:映射内存读写思路说明与部分代码开源.

6天前 1362

[原创]近些年踩过的坑:映射内存读写思路说明与部分代码开源.

6天前
1362

代码为一年前所写,最近有人谈论到此等操作,就把这长了草的东西拿出来了

一.注意事项
1.代码开源一部分的原因,还是防止伸手党.
2.代码无技术可言,完全是头热搞出来玩的.
3.代码有坑很正常,毕竟没有投入使用过.
4.发帖仅仅是让大手子们别瞎踩坑了.
二.思路说明
1.编写打洞的驱动
映射全部物理内存后
获取KernelDirectoryTableBase:用来寻址内核空间指定内存
获取 PhysicalMemoryMapAddress:用来寻址的物理内存(伪造)
获取 ProcessId在EPROCESS中的偏移:用来遍历进程
获取 PEB32与PEB64在EPROCESS中的偏移:用来遍历模块
获取CurrentProcess作为遍历进程的起点
以上信息全部传回R3,即可卸载驱动
2.应用层实现功能
通过KernelDirectoryTableBase+ PhysicalMemoryMapAddress来寻址访问R0内存
通过CurrentProcess作为起点,遍历目标进程EPROCESS
通过EPROCESS获取目标进程的PEB32 PEB64 UserDirectoryTableBase
通过User DirectoryTableBase+ PhysicalMemoryMapAddress 来寻址访问指定进程内存
通过PEB32 PEB64来遍历指定进程模块
3.细节清单
物理寻址,页面并非连续,如果数据跨页储存,需要处理,代码用了一种及其笨比的处理方式来处理,如有更好的方法请留言
遍历模块,一些成员偏移量因为对齐方式需要做一定程度的修改,这里我选择直接改的代码
物理寻址,如果分页内存被换出,又无法触发#PF,于是导致被换出的分页内存无法访问,目前在R3没有解决方法,如有方法请留言
5.其余问题,参考代码或留言,选择性回答.


[公告]安全测试和项目外包请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (14)
刘铠文 6天前
2
0
附件呢?
上传的附件:
刘铠文 6天前
3
0
哦牛批,为啥突然出现在了2楼
xie风腾 6天前
4
2

多谢楼主分享,学习了
xiaofu 8 6天前
5
0
mark
kainet 5天前
6
0
多谢分享.............
qdjytony 5天前
7
0
kevin流批!
黑洛 1 5天前
8
0
牛批
淡然他徒弟 5天前
9
0
mark
mb_ldtiaylu 5天前
10
0
天地豪迈 5天前
11
0
好东东,下载了。
Editor 5天前
12
0
mark,感谢!
芃杉 5天前
13
0
mark
萌克力 4天前
14
0
好顶赞
淡然他徒弟 2天前
15
0
mark
游客
登录 | 注册 方可回帖
返回