gpt4 book ai didi

c++ - 在调用导入之前将钩子(Hook) DLL 注入(inject)到进程中?

转载 作者:太空宇宙 更新时间:2023-11-04 13:40:43 24 4
gpt4 key购买 nike

我有一个目标进程,它在调用主代码之前加载一个 DLL。它通过一个 DLL 完成此操作,该 DLL 的名称已添加到文件的 ImportsTable(使用 StudPE)。我的目标是创建一个 Hook DLL,它将被注入(inject)到这个进程中并在它加载它的导入之前拦截它的调用。因此目标进程将在其安全 DLL 之前加载我的钩子(Hook) dll。我尝试使用常规方法,但没有成功,因为安全 DLL 总是在我的 Hook DLL 的 DllMain 被调用之前被调用。谁能告诉我解决这个问题的方法?

最佳答案

您可以创建目标进程暂停并使用 CreateRemoteThread() 进行注入(inject),但请注意以下限制:

  1. 您应该将远程线程的线程主例程复制到目标进程的地址空间。
  2. 此代码不能包含任何外部引用(例如 CRTL 或直接 WinApi 调用)。我通常会将此代码限制为加载 DLL 并从中执行函数,或者依赖 DllMain 来完成您需要的工作。为了调用 LoadLibrary 和 GetProcAddress 方法,我获取了它们的地址并将包含此信息的结构复制到目标进程,并将远程结构的地址作为参数传递给 CreateRemoteThread() 中的线程主例程。您可以使用 VirtualAllocEx() 在远程进程中分配内存。
  3. 这种情况下的远程线程会在主线程之前执行,包括进程和一些Win32/64初始化。因此,并非每个 Win32 API 都可以在这种情况下安全调用。

如果目标进程是由其他人派生的,则必须在初始化之前拦截它的创建。有一些方法可以做到这一点,所有这些方法都没有记录,因此不是 future 的证明。

关于c++ - 在调用导入之前将钩子(Hook) DLL 注入(inject)到进程中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27702893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com