近些年踩过的坑:映射内存读写思路说明与部分代码开源.
2019-11-06 23:56:31 Author: bbs.pediy.com(查看原文) 阅读量:169 收藏

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

6小时前 347

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

一.注意事项

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


文章来源: https://bbs.pediy.com/thread-255472.htm
如有侵权请联系:admin#unsafe.sh