您当前的位置:首页 > 今日分享头条 > 正文

loadlibrary函数(关于LoadLibrary和LoadLibraryEx 的使用问题)

本文目录

  • 关于LoadLibrary和LoadLibraryEx 的使用问题
  • LoadLibrary 问题 VC++

关于LoadLibrary和LoadLibraryEx 的使用问题

两个函数的主要区别是 LoadLibraryEx 多了个参数 dwFlags,可以设定一些动态加载 DLL 时的选项。 一般来说,LoadLibraryEx 加载 DLL 时并没有调用 DLL,也就是不会执行 DllMain,这样以来即使 DLL 本身存在错误也会映射成功的。而 LoadLibrary 加载时不旦旦映射,还会去调用执行 DllMain。 如果确认一个 DLL 本身不存在问题,但用 LoadLibrary 加载失败用 LoadLibraryEx 加载成功,此时一要看 DllMain 是否作出了某些限制,二要看 DLL 本身是否链接了其他 DLL。

LoadLibrary 问题 VC++

::WriteProcessMemory(hHandle,lpDate,(LPTHREAD_START_ROUTINE)&str,strlen(str)+4,NULL);改成:::WriteProcessMemory(hHandle,lpDate,str,strlen(str)+4,NULL);一个问题:为什么是 strlen(str)+4 ? 不是 strlen(str)+1 ?另一个问题:0x7C80AEEB 是 LoadLibraryA 的地址还是 LoadLibraryW 的地址。因为传娣的参数是 str ,所以必须使用相应的 LoadLibraryA 函数。 另外:VOID Load(LPVOID) 和 LPTHREAD_START_ROUTINE 定义的函数是不匹配的,你的远程进程执行 Load 返回时不会挂掉吗?LPTHREAD_START_ROUTINE 要求返回一个 DWORD ,而你的函数没有返回值,因此,调用堆栈会相差四个字节,而且 LPTHREAD_START_ROUTINE 要求函数是__stdcall ,你的 Load 未声明调用约定,在 VS 环境下,VS 默认用 __cdecl 来编译的,这样也会时函数执行返回时,调用堆栈产生不平衡的。Load 函数应该这样声明: DWORD WINAPI Load(LPVOID)Load 函数中只是简单调用了 LoadLibrary 函数,楼主既然已经知道 LoadLibrary 的地址了,那么 CreateRemoteThread 可以直接让线程执行 LoadLibrary 了:::CreateRemoteThread(hHandle,NULL,0,(LPTHREAD_START_ROUTINE)0x5F42FEF5,lpDate,0,&lj);


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 天蝎男眼中的金牛女什么样子,十二星座男眼中的金牛女(想知道金牛心里有没有你)

下一篇: 涡轮增压的2.5升发动机奥迪RS3Sportback具有335制动马力



推荐阅读