使用Jmp的办法HOOK API的时候必须要用WriteProcessMemory吗

zuoluoyun 2008-08-30 08:43:46
看了很多文章,使用Jmp的办法HOOK API的时候都使用了WriteProcessMemory来改写函数的入口地址.我想既然DLL既然已经被注入了目标进程,那地址空间应该是一样的,所以把WriteProcessMemory用memcpy替换掉,这个时候执行就失败了,是为什么呢? 我是HOOK的MessageBoxA,这个函数是在user32.dll里面,是不是因为在其他模块里面所以不能用memcpy呢?
...全文
388 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoteng1984 2008-09-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zuoluoyun 的回复:]
那也就是说WriteProcessMemory在读写内存的时候会自动处理内存有保护的情况 ?
[/Quote]
WriteProcessMemory不会处理内存有保护的情况。也只能改写“可写”属性的内存。
MSDN的解释:
The WriteProcessMemory function writes data to an area of memory in a specified process. The entire area to be written to must be accessible or the operation fails.

WriteProcessMemory与memcpy的区别,仅在于能否跨进程,即能否写到其他进程的地址空间中去
zuoluoyun 2008-09-02
  • 打赏
  • 举报
回复
搞定了.
看来WriteProcessMemory可以自动处理一部分内存保护的情况,只要是整个进程是可以读写的就可以使用.而不用关心某个页面的保护属性.
所以使用memcpy的使用,先使用VirtualProtect改变页面的保护属性,然后就可以顺利的读写了.
谢谢大家!
凌乱1980 2008-09-01
  • 打赏
  • 举报
回复
建议使用WriteProcessMemory,用memcpy的话,有时候会碰到内存保护的情况“*****不能为read”
lake_cx 2008-09-01
  • 打赏
  • 举报
回复
不用,因为修改时一般代码已经注入目标进程了,你只要用VirtualProtect修改一下页属性为可写、可执行的就可以直接用赋值语句或者memcpy操作。
WriteProcessMemory在写的时候也不会该页属性,仍然需要用VirtualProtect,它唯一的好处是可以直接向其他进程写入数据
wltg2001 2008-09-01
  • 打赏
  • 举报
回复
内存空间也是有属性的,有的属性是执行,有的是可读写的,大多数代码部分都是可执行属性的,所以不能随便改写
zuoluoyun 2008-09-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nooning 的回复:]
不一定,你可以直接赋值(你已经在目标空间中,可以用远线程入口为loadlibrary实现),但是有时候直接赋值会异常,那是因为有保护,你可能要用virtualquery调整属性。
[/Quote]

那也就是说WriteProcessMemory在读写内存的时候会自动处理内存有保护的情况 ?
JonathanS666 2008-09-01
  • 打赏
  • 举报
回复
inline hook,硬编码将jmp address写入进程空间。
masa_sts 2008-09-01
  • 打赏
  • 举报
回复
Jmp的办法HOOK API不一定要用 WriteProcessMemory
WriteProcessMemory是为了创造远程jmp的入口,

所以如果是本地的话,就不需要,方法自己想~ -v-
nooning 2008-09-01
  • 打赏
  • 举报
回复
不一定,你可以直接赋值(你已经在目标空间中,可以用远线程入口为loadlibrary实现),但是有时候直接赋值会异常,那是因为有保护,你可能要用virtualquery调整属性。
Semigod 2008-08-31
  • 打赏
  • 举报
回复
注入DLL,然后再改地址的这种方法我没有试过,也还真是不知道。
我的做法是,先创建目标进程,然后在开始执行进程前开始用writeProcessMemory进行修改,修改完再让它进行

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧