【问题标题】:C++ Dll InjectionC++ DLL 注入
【发布时间】:2009-11-22 01:56:04
【问题描述】:

非常感谢您在这方面的帮助。

我一直在尝试将 Dll 注入远程进程并在其中进行一些更改,我现在遇到的问题是我不知道如何进行。

首先,这是我迄今为止开发的一段代码:
dllmain.cpp

#include <windows.h>
#include <stdio.h>

BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                       DWORD reason        /* Reason this function is being called. */ ,
                       LPVOID reserved     /* Not used. */ )
{
switch (reason)
    {
      case DLL_PROCESS_ATTACH:
           MessageBox (0, "From DLL\n", "Process Attach", MB_ICONINFORMATION);
        break;

      case DLL_PROCESS_DETACH:
           MessageBox (0, "From DLL\n", "Process Detach", MB_ICONINFORMATION);
        break;

      case DLL_THREAD_ATTACH:
           MessageBox (0, "From DLL\n", "Thread Attach", MB_ICONINFORMATION);
        break;

      case DLL_THREAD_DETACH:
           MessageBox (0, "From DLL\n", "Thread Detach", MB_ICONINFORMATION);
        break;
    }  

    return TRUE;
}

它只是根据满足的条件显示一个消息框。 现在我希望我的 Dll 做的是,在注入远程进程后,我希望它写入一个内存位置并更改它的值。

数据类型:无符号短整型
内存位置:0041D090

我希望一切都清楚, 感谢您的耐心等待,非常感谢您的帮助。

【问题讨论】:

    标签: c++ dll process code-injection


    【解决方案1】:

    您不必编写 DLL 来更改另一个进程在固定地址处的内存。你可以使用@987654321@

    但是...将DLL注入另一个进程的方法如下...

    1. 使用VirtualAllocEx()将文件路径的长度分配给目标进程内存中的DLL...这就像远程执行malloc一样。

    2. 使用 @987654323@ 将 DLL 的文件路径复制到上一步返回的路径中。这就像远程执行strcpy

    3. 使用@987654324@。您可以将其指向 LoadLibrary() 作为入口点,并将步骤 1 和 2 中的文件路径作为参数。老实说,这有点 hacky,但是如果您要注入 DLL,那么您已经很 hacky。另一种技术是使用步骤 1 和 2 将一些机器代码加载到远程进程中并指向它。

    请记住,这种技术是破坏目标进程稳定性的好方法。特别是,我不会在最终被运送给其他人的产品中这样做。

    【讨论】:

    • 我明白了,如果我没听错的话,这将是创建注入器以注入 Dll 本身的步骤。但是,在将 Dll 注入远程进程并为其创建线程后,我应该如何处理它? WriteProcessMemory()?
    • 好吧,在那个时候,在你的 DLLMain 的 DLL_PROCESS_ATTACH 中你可以做 *((DWORD *)0x0041D090) = SomeValue;不过,我之前的观点是,您不需要注入 DLL 来执行此操作,您只需从不同进程中的 WriteProcessMemory() 即可。
    • 嗯,我想这就是我所需要的。无论如何,我注入 Dll 而不是简单地使用来自另一个进程的 WriteProcessMemory() 的重点是,在我注入 Dll 的进程关闭后,我仍然希望能够修改远程进程中的值。无论如何,我会尝试一下,看看是否有任何错误。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    相关资源
    最近更新 更多