首页
社区
课程
招聘
[原创] [Windows驱动开发] 01_内存读取
发表于: 2019-5-21 19:15 20778

[原创] [Windows驱动开发] 01_内存读取

2019-5-21 19:15
20778

图片描述

经常遇到一些软件被保护起来,无法读取其内存数据,今天将基于开源库BlackBone,编写一个简单的内存读写工具。

这里写了个工具,界面如下图所示:

九分工具箱-主界面

主要功能:

工具会根据“读取方式”,分别执行Windows API、BlackBone API、BlackBone驱动三种方式的内存读取,满足不同的使用场景。

本工具工程github代码地址:https://github.com/ninecents/MyOpen

本工具工程代码上传了BlackBone的VS2017版本的代码,地址为https://github.com/ninecents/MyOpen/third/Blackbone

本工具工程代码地址为https://github.com/ninecents/MyOpen/course/WinDriver/tools/tools.sln

不了解BlackBone的,可以参考BlackBone介绍

驱动环境搭建可参考 [Windows驱动开发] 00_环境搭建

集成步骤:

tools-MFC工程中“C/C++ -> 命令行”,添加Blackbone路径/I"../../../../third/Blackbone/src"

代码中引用相关头文件,如下所示:

点击读取按钮,先检测参数,具体代码如下所示:

ReadProcessMemory实现很简单,直接调用该函数即可:

查看ReadProcessMemory函数原型:

参数 lpBaseAddress 的类型是LPVOID,对于32位程序,该值只有4字节,读取64位进程就只能看运气了,如果地址大于4字节,读取的结果是错的(也可能直接失败)。比如,我们读取64位的chrome进程,由于chrome.exe模块地址0x13F630000大于4字节,ReadProcessMemory显示错误的内容。

ReadProcessMemory方式读取结果

BlackBone_R3方式读取结果

BlackBone_R3方式实现也很简单,直接调用BlackBone的api函数即可:

BlackBone_R3方式最终调用了Nt函数NtWow64ReadVirtualMemory64(32位的Windows操作系统不知道是不是下面的调用关系),调用关系如下:

BlackBone_R3读取内存函数调用关系

BlackBone_R0方式实现如下:

最终R3层调用了DriverControl::ReadMem函数,对应控制码是IOCTL_BLACKBONE_COPY_MEMORY。

而R0层调用了BBCopyMemory函数,而该函数调用了内核API函数MmCopyVirtualMemory实现内存读写。

打开虚拟机,将win64udl_exe.exe、tools-MFC.exe、BlackBoneDrv7.sys拷贝到虚拟机中,运行win64udl_exe.exe程序(不要关闭,保证未签名的BlackBoneDrv7.sys可以正常加载):

虚拟机中tools需要的软件

打开tools-MFC.exe,选择任意进程,选择读取方式为“blackbone_R0”,点击读取按钮:运行结果如下图所示:

BlackBone_R0方式读取结果

本文章仅供用于技术研究用途,请勿利用文章内容操作用于违反法律的事情。

欢迎各位关注公众号和QQ群进行技术交流,关注有福利喔。

微信公众号:

微信公众号

qq群:IT技术控/953949723

逐梦中原技术交流QQ群

 
 
 
 
 
 
 
 

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2020-3-2 21:50 被kinghzking编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (12)
雪    币: 5734
活跃值: (1737)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
你写了这么多都不如 MmCopyVirtualMemory 管用
最后于 2019-5-21 19:30 被blindtiger编辑 ,原因:
2019-5-21 19:30
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
3
建议学习一下山总搞的MFC界面

2019-5-21 19:30
0
雪    币: 4128
活跃值: (869)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
hzqst 建议学习一下山总搞的MFC界面
嗯,下个版本看看
2019-5-21 19:35
0
雪    币: 4128
活跃值: (869)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
小艾 你写了这么多都不如 MmCopyVirtualMemory 管用
入门的东西,见笑了
2019-5-21 19:46
0
雪    币: 1602
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢楼主带领大家学习!返回太大了,每次发帖都点着
2019-5-22 06:00
0
雪    币: 4128
活跃值: (869)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
panti 感谢楼主带领大家学习!返回太大了,每次发帖都点着
我也是在学习,共勉。
2019-5-22 09:06
0
雪    币: 1055
活跃值: (412)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
感谢分享
2019-5-22 09:27
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
正在学习,感谢分享
2019-6-9 22:36
0
雪    币: 283
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
厉害,感谢感谢
2019-6-17 22:33
0
雪    币: 3888
活跃值: (3678)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢楼主  学习中
2019-6-18 05:56
0
雪    币: 1290
活跃值: (2332)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
12
大大您这个QQ搜不到哦
2021-1-24 14:59
0
雪    币: 4128
活跃值: (869)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
13
灵幻空间 大大您这个QQ搜不到哦
群953949723
2021-1-25 11:00
0
游客
登录 | 注册 方可回帖
返回
//