gpt4 book ai didi

c++ - DLL注入(inject)。带参数执行CreateRemoteThread

转载 作者:搜寻专家 更新时间:2023-10-31 00:20:09 30 4
gpt4 key购买 nike

我编写的 dll 注入(inject)程序运行良好。它将 dll 加载到远程进程并调用一些函数。现在我想将参数传递给该函数。 CreateRemoteThread 有 lpParameter,但是如何在 dll 中获取传递的参数以在函数中使用它?

更新:dll入口点很常见:

BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)

Dll 只包含一个函数,原型(prototype)如下:

void TestFunction(const char* ua);

调用该函数的代码是:

CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)((void*)codecaveExecAddr), (LPVOID)argumentAddress, 0, NULL);

如您所见,我尝试在 TestFunction 中传递“test”字符串。但是后来我检查了 TestFunction 中的 ua 参数,它包含一些垃圾。

这里是整个项目文件:
http://pastebin.com/gh4SnhmV
http://pastebin.com/Sq7hpSVx
http://pastebin.com/dvgXpUYz

更新 2
TestFunction 应该有一些特定的原型(prototype)还是我可以使用任何只要它只有一个 LPVOID 类型的参数?我很困惑。谁能给我一个例子,说明如何使用一些参数调用注入(inject)的 dll 函数?

最佳答案

您需要在其他进程的内存中分配数据。为此,请使用 VirtualAllocEx 函数,该函数将返回您传递给 CreateRemoteThread 的其他进程内存中的地址。

CreateRemoteThread 的工作方式与 CreateThread 完全相同,只是它在远程进程中创建线程。要记住的一件事是,当您将指针传递给 lpParameter 中的对象时,运行在不同虚拟地址空间中的远程线程将尝试访问那个地址空间中的那个地址。

关于c++ - DLL注入(inject)。带参数执行CreateRemoteThread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6582096/

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