首页
社区
课程
招聘
[原创]发一份目前可以读写DXF内存的驱动源码
发表于: 2016-8-22 01:41 28015

[原创]发一份目前可以读写DXF内存的驱动源码

2016-8-22 01:41
28015

编译环境是 VS2013+WDK8.1
测试环境  XP32

弄这个过保护的都知道,现在驱动动不动上千一个月,源码动不动上万,穷鬼买不起,只能自己查资料,慢慢弄.基本的读写是没问题了,但是有个特别别扭的问题,发出来,希望有好心人能指点下该怎么弄.

源码只是自己拿来测试的,所以写得不是很规范,不过也就那么几行代码,所以也不算很乱.

代码基本上是  从 Tesla.Angela。 那里抄的.
http://bbs.pediy.com/showthread.php?t=187348

代码只完成了读取部分,写入部分自己参照  Tesla.Angela 教程里面的 [5-5]强制读写进程内存.pdf课程修改加入即可,改改估计WIN 64位系统应该也可以实现.

发出来主要是学习,我对驱动也是什么都不懂,查了几天的资料,也只能写这样吧 .

说说遇到的别扭的问题.
测试发现,userMode的时候,读取到的内存都是 乱码,只有KernelMode的时候读取到的才是真实的内存数据.

所以源码中,在 调用 DeviceIoControl 进来的时候,创建内核线程来 读取内存,这样就能读写到了.

但是,看着总是很别扭,尝试修改线程 PreviousMode ,但是没有用,也不知道是不是这样修改,至少修改后 ExGetPreviousMode()得到的结果却是是 kernelmode了 .


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

上传的附件:
收藏
免费 3
支持
分享
最新回复 (30)
雪    币: 7498
活跃值: (5327)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
源码中带有简单的调用例子.
有人会不创建线程读取的,麻烦告诉下呗
2016-8-22 01:42
0
雪    币: 6
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢楼主分享技术帖
2016-8-22 01:45
0
雪    币: 19
活跃值: (1086)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢楼主分享技术帖
2016-8-22 03:00
0
雪    币: 110
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢发布。。。。。。
2016-8-22 07:23
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
6
真实原理是system进程可以读写跟kernelmode不kernelmode没什么关系
2016-8-22 08:24
0
雪    币: 4904
活跃值: (2330)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mark
2016-8-22 09:03
0
雪    币: 22
活跃值: (443)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
马克
2016-8-22 09:19
0
雪    币: 110
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
V总爆料了,大家都去模拟那进程访问把,就可以了
2016-8-22 09:40
0
雪    币: 105
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
以前csrss进程也可以读写,现在貌似也不行了。
2016-8-22 09:42
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
11
csrss进程也可以读写,只是需要是真的csrss。
PS:其实smss也能读写
2016-8-22 10:21
0
雪    币: 219
活跃值: (773)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
12
..你这个代码跟你这个没任何关系, 那是通过CR3来的,dxx 是 替换CR3来实现的,没用
2016-8-22 11:47
0
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
13
原理虽然不在这里 但是SYSTEM是被过滤的。
2016-8-22 12:27
0
雪    币: 44
活跃值: (186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
果然一夜之间大神把所有方法都爆出来了,感情真的很牛呀。
2016-8-22 14:46
0
雪    币: 7498
活跃值: (5327)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
原来是这样,明白了,谢谢
2016-8-22 14:58
0
雪    币: 213
活跃值: (1008)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
这个在TX白名单里面的进程是可以读取的
2016-8-22 14:59
0
雪    币: 105
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
我用的是CsrGetProcessId得到的csrss进程ID
2016-8-22 15:37
0
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
18
其实注入模块到csrss里面 再直接ReadProcessMemory就可以了。
tx如果禁止csrss读取dxf内存,就会导致dxf进程报错,这个我试过,所以他必须过滤掉csrss smss这些system进程
2016-8-24 15:20
0
雪    币: 110
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
这种跳板如何保证效率

如果调试数据没问题

那种1秒几百次上千循环,那一语言那循环恐怖一B

基本要和系统那个读写一样效率,才能保证他们那些循环的效率
2016-8-24 15:28
0
雪    币: 110
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
忘记引用了
2016-8-24 15:29
0
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
21
活该谁让你用易语言写那种循环了。。。易语言本来就不适合用来写跟系统紧密相关的东西
2016-8-24 17:13
0
雪    币: 110
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
也就是市面上还有另外一种不是跳板的读写,要不易语言要死

猜测是模拟成系统白名单或者可信进程

决无可能是跳板

跳板注入,调试分析,都不错

强力读写就不行了
2016-8-25 04:57
0
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
23
进程名叫csrss.exe就行,CF的驱动有点弱智用PsGetProcessImageFileName判断csrss的
2016-8-25 22:08
0
雪    币: 110
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
那么弱。。。
2016-8-26 07:07
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
对于64位,某些地址写内存的时候,确实可以写进去,然后整个内存块的代码都跟着秒变了,接下来就会导致进程运行乱码而崩溃(暂停就不会崩溃)
由于未发现内核Hook,所以很可能被VT给隐藏了
结果是下cc断点也会秒崩溃,反调试和防止写内存两不误
2016-10-24 22:32
0
游客
登录 | 注册 方可回帖
返回
//