关于覆盖API代码HOOK的疑问?高手请进!
如果要通过覆盖API代码前几个字节进行JUMP跳转,有本书上说是WriteProcessMemory写DLL中API代码的前几个字节!
问题来了,大家知道DLL是Windows系统内共享的只有一份拷贝,其它进程只是映射该内存拷贝到自己的虚拟地址空间,如果用WriteProcessMemory改写该地址,到底是改写了哪里?是系统共享的DLL内存空间还是进程自己的虚拟地址空间???
1、如果是改写系统共享DLL内存空间,那这种HOOK是存在问题的,因为其它进程也要读这个空间,而JUMP跳转地址代码却不存在!
2、如果说是改写了进程自己的虚拟地址空间,那DLL共享对这个进程就不成立了,这个进程必须有一个新的DLL或API代码拷贝!
3、能不能直接修改所有进程共享的那份DLL内存拷贝?
4、进程自己是否可以使用非共享的自己独占的User32等DLL?就是不和别人共享这些DLL?
到底再修改DLL中API代码前几个字节时发生了什么?请高手讲解一下!书本上只只知其然,不知其所以然!