【问题标题】:injecting a dll with createremotethread使用 createremotethread 注入 dll
【发布时间】:2013-10-18 20:30:37
【问题描述】:

createremotethread 如何在进程中执行 dll?它使用的参数之一是 loadlibraryA。所以我得到了它在进程中执行 loadlibrary 函数的部分。然后它应该将上下文切换到内核模式。 dll是否被进程执行,loadlibrary函数返回值?

【问题讨论】:

  • 请描述您遇到的编程问题,您认为解决方案涉及了解 CreateRemoteThread 如何加载 DLL。

标签: windows winapi dll


【解决方案1】:

就像任何其他 LoadLibrary 调用一样,动态加载程序将使用 DLL_PROCESS_ATTACH 原因代码调用您注入的 DLL 的 DllMain 函数。 DllMain 中的代码可以从那里获取它,但我强烈建议您不要在 DllMain 本身由于加载程序锁定而做太多事情。

【讨论】:

  • 是的,在DllMain,创建另一个线程来完成繁重的工作
  • 所以动态加载器会加载dll,然后填充可执行文件中的表,然后exe会在调用loadlibrary的同一线程中调用dllmain?
  • 为什么不使用getprocaddress函数调用dllmain?
  • 因为 LoadLibrary() 会为您调用它,并且无论如何您都不能直接调用 DllMain(),因为它不是 GetProcAddress() 可以找到的导出函数。 LoadLibrary() 执行 DLL 的启动代码,然后根据需要在内部调用您的 DllMain()。
  • 调用 dllmain 会发生什么?
猜你喜欢
  • 2014-05-10
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2017-04-28
相关资源
最近更新 更多