首页
社区
课程
招聘
求助]请问为什么ReadProcessMemory 成功而WriteProcessMemory失败?
发表于: 2009-2-15 22:05 9239

求助]请问为什么ReadProcessMemory 成功而WriteProcessMemory失败?

2009-2-15 22:05
9239
对某个程序,无hook,

现象:
先使用PROCESS_ALL_ACCESS权限打开进程,
使用ReadProcessMemory  和 WriteProcessMemory 函数进行测试:
读取 401000H时成功,但写入 401000H时失败!
考虑到开启了硬件DEP,所以使用VirtualProtectEx修改401000H的属性为PAGE_EXECUTE_READWRITE,这下401000H可以写入了!

但写入 0683EE3h时又失败了,而且是在使用VirtualProtectEx成功返回1的情况下失败的!
读取0683EE3h是成功的!

请问是怎么回事?

如果将内存lock后会出现这样的情况吗?关键是读取是成功的啊!没有hook(SSDT\inline都没有)

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 272
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我看了下 NtWriteMemory 返回值,一次是 :STATUS_BUS_RESET  ((NTSTATUS)0x8000001DL) ,一次是:STATUS_PARTIAL_COPY    ((NTSTATUS)0x8000000DL)

大家看看是什么原因
2009-2-16 09:10
0
雪    币: 431
活跃值: (442)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
3
先用OD或SI测试写这地址后是否出错,若正常,就是你程序的问题了。
2009-2-16 11:46
0
雪    币: 272
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
程序决对没问题。我想问问有什么情况会导致跨进程写内存失败?
比如目标程序不断读取,并使用一些lock 或者清缓存的指令或者API?
2009-2-16 17:52
0
雪    币: 272
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
再顶一次,没人回就算了
2009-2-19 09:00
0
雪    币: 1657
活跃值: (291)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
6
LZ...在写之前先要将区段改成可写,这个是安全期间的重要一步
2009-2-19 21:48
0
游客
登录 | 注册 方可回帖
返回
//