繁体   English   中英

C ++ Dll Injection

[英]C++ Dll Injection

我非常感谢你的帮助。

我一直试图将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做的是,在注入远程进程后,我希望它写一个内存位置并改变它的值。

数据类型:Unsigned Short Int
内存位置:0041D090

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

您不必编写DLL来在固定地址更改另一个进程的内存。 您可以使用WriteProcessMemory()

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

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

  2. 使用WriteProcessMemory()将DLL的文件路径复制到上一步返回的内容中。 这就像远程做strcpy

  3. 使用CreateRemoteThread() 您可以将它指向LoadLibrary()作为入口点,将步骤1和2中的文件路径指定为参数。 说实话,这有点笨拙,但是如果你注射了一个DLL,你就已经非常hacky了。 另一种技术是使用步骤1和2将一些机器代码加载到远程过程中并将其指向该过程。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM