gpt4 book ai didi

C++ DLL 注入(inject)

转载 作者:太空狗 更新时间:2023-10-29 20:32:32 25 4
gpt4 key购买 nike

非常感谢您对此提供的帮助。

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

首先,这是我到目前为止开发的一段代码:
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 做的是,在被注入(inject)到远程进程之后,我希望它写入一个内存位置并更改它的值。

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

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

最佳答案

您不必编写 DLL 来更改固定地址处另一个进程的内存。您可以使用 <a href="http://msdn.microsoft.com/en-us/library/ms681674(VS.85).aspx" rel="noreferrer noopener nofollow">WriteProcessMemory()</a> .

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

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

  2. 使用 <a href="http://msdn.microsoft.com/en-us/library/ms681674(VS.85).aspx" rel="noreferrer noopener nofollow">WriteProcessMemory()</a>将 DLL 的文件路径复制到上一步返回的内容中。这就像远程执行 strcpy .

  3. 使用 <a href="http://msdn.microsoft.com/en-us/library/ms682437(VS.85).aspx" rel="noreferrer noopener nofollow">CreateRemoteThread()</a> .你可以指向LoadLibrary()作为入口点,将步骤 1 和 2 中的文件路径作为参数。老实说,这有点 hacky,但是如果您要注入(inject) DLL,您就已经很 hacky 了。另一种技术是使用步骤 1 和 2 将一些机器代码加载到远程进程中并将其指向该进程。

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

关于C++ DLL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1777526/

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