Windows核心编程的不正确的地方

青稞 2011-06-01 08:08:08
在Windows核心编程的第22章22.4节,使用远程线程注入DLL中,获取Kernel32中LoadlibraryW的地址时,书上说到:根据经验,系统在每个进程中会将Kernel32.dll映射到同一个地址。因此要向下面这样调用CreateRemoteThread:
PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryW");
HANDLE hThread = CreateRemoteHandle(hProcessHandle, NULL, 0, pfnThreadRtn, pszLibFileRemote, 0, NULL);

我按照书上的样子写了个Demo,做了个类似的Hook,注入到所有进程中,结果只有我自己的这个进程中是正确加载了我的HookDLL,其余进程都没有加载HookDll。。
所以感觉书上说的不对,pfnThreadRtn应该只能获取到本进程中Kernel32中的LoadLibraryW的地址,而其他进程中Kernel32中的LoadLibraryW地址并非一样。。
...全文
165 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
青稞 2011-06-02
  • 打赏
  • 举报
回复
感谢各位的见解以及纠正。。
CreateRemoteHandle确实是手误。。应该是CreateRemoteThread
应该是我理解有误吧,书上确实说到:根据经验,系统在每个进程中会将Kernel32.dll映射到同一个地址。
所以我实验了吧,枚举了所有进程,然后调用CreateRemoteThread注入每个进程,结果只有我自己测试的进程被注入成功了。
所以才有此疑问。
smwhotjay 2011-06-02
  • 打赏
  • 举报
回复
LZ,虾扯蛋.. 好好看书吧.. 搞这么震精的标题.雷人啊..
辰岡墨竹 2011-06-02
  • 打赏
  • 举报
回复
Vista之后的系统kernel32.dll等的加载地址被随机化,成功的概率不到1/256……
TwilightSun 2011-06-01
  • 打赏
  • 举报
回复
可能我孤陋寡闻了,没见过CreateRemoteHandle(汗颜,没有认真读过Windows核心编程,正在翻……)

我尝试过CreateRemoteThread,在XP下没问题,在Vista上要用CreateRemoteThreadEx,在Win7下这个函数ms失效了,一直没成功过。

lz注意一下,虽然Kernel.dll一般映射的地址在各进程中一样,但是用CreateRemoteThread来远程调用LoadLibrary时,要传递一个dll文件名的参数(LPCTSTR或LPCWSTR),这个地址并不一样,OpenProcess等来创建远程变量

如果不行的话,lz要不要试试别的方法注入dll,比如全局消息钩子
sunlin7 2011-06-01
  • 打赏
  • 举报
回复
楼主没有仔细看<<Windows核心编程>>,或者至少是没有完全看懂。上面这一节描述了如何向特定进程注入dll,并没有说可以向系统中“所有的进程”注入dll.--在vista之后的系统,这是不可能完全的。
Bczheng1 2011-06-01
  • 打赏
  • 举报
回复
CreateRemoteHandle这个是你自己定义的函数,还是你打错了,是CreateRemoteThread函数,
hProcessHandle这个是要注入的进程句柄,还是你自己的句柄。
让所有进程加载一个DLL,好像是设置钩子吧。
这个CreateRemoteProcess只是针对某一个进程。。。。。。你那个方法只会让指定的进程加载DLL。
不知道,回答的是不是你所问的。。。。。。
龙行天下之Sky 2011-06-01
  • 打赏
  • 举报
回复
系统在每个进程中会将Kernel32.dll映射到同一个地址

并没有说能获取其他进程中的地址吧?

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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