假设:
#include<Windows.h>
extern "C" __declspec(dllexport) bool WINAPI DllMain(HINSTANCE hInstDll, DWORD
fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
{
MessageBox(NULL, "Hello World!", "Dll says:", MB_OK);
break;
}
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return true;
}
我想将参数传递给我的C ++“DLLMain”并读取它们并使用cout>>
来显示它们
我怎么想这样做
在c#的“CreateRemoteThread”中,我做了吗
答案 0 :(得分:0)
我将这个问题读为:
我正在将DLL注入到外部进程中,如何从该DLL调用函数并使用CreateRemoteThread()将参数传递给该函数?
注射时,使用CreateRemoteThread()调用LoadLibrary(),然后传递1个变量,该变量是要加载的DLL的路径。
您只能传递1参数。无法传递多个参数。
但是有解决方案。在您的DLL中创建一个导出函数,该函数使用一个指针来构造具有所需参数的结构。
使用WriteProcessMemory()将包含args的结构写入目标进程的内存中。
现在再次调用CreateRemoteThread()并将指针传递给您编写的内存。在函数内部,解析结构以获取参数。
这是必须执行的操作,因为CreateRemoteThread()只能传递1个参数。