首页
社区
课程
招聘
未解决 [求助]请问一下,是什么函数导致x64dbg能附加,但是无法读取内存,ce也是一样,可以附加,但是不能读取内存
发表于: 2020-6-15 22:32 8162

未解决 [求助]请问一下,是什么函数导致x64dbg能附加,但是无法读取内存,ce也是一样,可以附加,但是不能读取内存

2020-6-15 22:32
8162

这两天无聊,学习反反调试技术,刚入门,解决了ObRegisterCallbacks的俩pre函数和进程、线程、映像回调,按理说应该可以被附加读内存,但是我无论用x64dbg还是ce都只能附加但是无法读到内存,截图后两个回调函数是我自己创建的
都无法查看内存,但是我自己手写OpenProcess+ReadProcessMemory可以读取到该游戏地址里面的内存,地址是用驱动ce读出来的,并且验证,数据没问题
我就真的挺弄不懂的,(一个冷门的游戏)为什么ce加载我自写驱动但不加载ce驱动的情况下读取不出来内存,但是用户层的ReadProcessMemory可以读取出来。保护模块是be。x64dbg标题有游戏名。小白求解!
6.16日再次编辑,我的思路是ce读不出来,为什么,那肯定是OpenProcess或者ReadProcessMemory有某个返回不对,或者权限不够,所以读不到,所以我自写了ReadProcessMemory,在已经加载我自写驱动情况下可以读出地址数据,但是同环境ce无法读取。所以我想求助的是,为什么ce读不出来内存,而ReadProcessMemory可以,这是因为哪个函数保护的。


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

最后于 2020-6-16 12:42 被血之哀丿释然编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (15)
雪    币: 9
活跃值: (98)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
对了,我用网上过内存保护无驱动ce也可以读取出来内存,但是我查阅相关资料,并没有什么内存保护ReadProcessMemory不防,防ce啊。一头雾水。
2020-6-15 22:34
0
雪    币: 9626
活跃值: (1838)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
3

¿

没驱动你摘啥回调?还是说你理解的驱动就只能是那俩回调?

2020-6-15 23:23
0
雪    币: 688
活跃值: (224)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没驱动就是万万不可能,有驱动就是万万个可能.
如果游戏没有驱动的话,它可以做到这样,你再来"雾水"吧.
如果有驱动的话,那也不是什么高科技了,RING0要玩残RING3,无数种方法.
2020-6-15 23:37
0
雪    币: 9
活跃值: (98)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Sprite雪碧 ¿没驱动你摘啥回调?还是说你理解的驱动就只能是那俩回调?
啥意思,我的意思,我已经用驱动摘了俩钩子和3个回调。我主要表达的是,解决所有回调以后,为啥ce在不加载ce自己驱动情况无法读取内存,但是readReadProcessMemory能读出来。这是啥情况,是内存保护吗,如果内存保护,我需要去查看哪个函数。我只查找到在用户层函数VirtualProtect,但是没找到内核层函数,经过测试用户层函数并无法体现上图效果,应该不是这个原因导致的。我就一头雾水
2020-6-16 10:58
0
雪    币: 9
活跃值: (98)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
flarejune 没驱动就是万万不可能,有驱动就是万万个可能. 如果游戏没有驱动的话,它可以做到这样,你再来"雾水"吧. 如果有驱动的话,那也不是什么高科技了,RING0要玩残RING3,无数种 ...
我想知道做到这种保护的是哪个函数。不是说我认为驱动做不到这个行为。我奇怪的是,ce读取不到,readReadProcessMemory可以读取到,难道是驱动检测到ce,然后又执行了什么奇怪的函数?那我应该如何去分析。我驱动就简单用自己注册的回调函数入口替换了这5个函数入口地址,我没有卸载这5个函数,不然关闭游戏要蓝屏。
2020-6-16 11:03
0
雪    币: 1420
活跃值: (2286)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
屏蔽内存 的手法很多啊。这个需要具体分析。你把回调摘掉只是基操,但是读写内存方面的 你可没有处理。
2020-6-16 11:20
0
雪    币: 9
活跃值: (98)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
青丝梦 屏蔽内存 的手法很多啊。这个需要具体分析。你把回调摘掉只是基操,但是读写内存方面的 你可没有处理。
自写ReadProcessMemory()能读取,按理说ce就能读取吧。
2020-6-16 11:50
0
雪    币: 9
活跃值: (98)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
别沉了呀,老哥们!!!给个思路也行!
2020-6-16 22:59
0
雪    币: 433
活跃值: (1930)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
10

因为CE不是通过readprocessmemory读内存的..

CE在github有源码,感兴趣可以读一下。

最后于 2020-6-17 00:47 被萌克力编辑 ,原因:
2020-6-17 00:44
0
雪    币: 688
活跃值: (224)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
楼上说的太复杂化了,楼主说的并非只是CE无法读取,X64dbg也无法读取.
X64dbg使用的就是ReadProcessMemory读取的.
而我觉得,这种可能就是最笨的反调试技能之一:判断当前进程是不是调试器/修改器.
而CE和X64DBG都是被黑名单了的.至于如何反,个人猜测可能仅仅是进程名判断....
2020-6-17 05:44
1
雪    币: 9
活跃值: (98)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
flarejune 楼上说的太复杂化了,楼主说的并非只是CE无法读取,X64dbg也无法读取. X64dbg使用的就是ReadProcessMemory读取的. 而我觉得,这种可能就是最笨的反调试技能之一:判断当前进 ...
谢谢老哥给的思路,但是我今天晚上已经做了实验,用改名为CSRSS.exe的ce也读取不到内存,我现在初步判断,要不就是检测到了某个模块?或者说我钩子还是没清理干净,又或者有深层次的钩子。
2020-6-17 22:23
0
雪    币: 9
活跃值: (98)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
老哥,大佬们。我已经琢磨了快两个星期了,battleye是不是还hook了什么函数。求个大佬提一下也行啊!为啥就是无法读取内存啊,我都开始检查pe头了!
2020-6-18 22:50
0
雪    币: 688
活跃值: (224)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
通用型反反调试插件用上再说吧,比如ScyllaHide,TitanHide,SharpOD这些.
如果这样依然还被检测到,再做深入研究吧.
这些通用型反反调试插件的用处就是这样,虽然无法完全帮你越过检测,但是可以帮你指明大概思路.
类似你这种情况,我百分之一一亿肯定是进程检测的方式以黑名单识别拒绝对象.
因为x64dbg和CE的共同点并没有什么,就是你说的2个API:OpenProcess+ReadProcessMemory,
而默认情况下,CE是没有"调试器"行为的,它不会附加到进程去,当然也不会启用调试模式.如果连
这样都被识别的话,除了进程检测之外,没有任何方式了.
这个傻屌游戏,没有你想象中那么复杂,你以"用什么方式识别进程是CE"的方向去思考就行了,
什么调试对象,什么调试端口,什么进程权限这些,你通通不用理.
2020-6-18 23:41
0
雪    币: 9
活跃值: (98)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
flarejune 通用型反反调试插件用上再说吧,比如ScyllaHide,TitanHide,SharpOD这些. 如果这样依然还被检测到,再做深入研究吧. 这些通用型反反调试插件的用处就是这样,虽然无法完全帮你越 ...
谢谢思路,我这就试试。这个问题,这两天弄得头昏脑胀的,没啥动力看理论知识,真的很烦。
2020-6-21 22:56
0
雪    币: 1657
活跃值: (4753)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16

使用dbvm,没有读写不了的内存

最后于 2023-3-30 00:20 被逆向爱好者编辑 ,原因:
2023-3-30 00:19
0
游客
登录 | 注册 方可回帖
返回
//