clu*_*ter 2 c++ dll winapi code-injection createremotethread
我写了dll注入程序,工作得很好.它将dll加载到远程进程并调用一些函数.现在我想将参数传递给该函数.CreateRemoteThread有lpParameter,但如何在dll中传递该参数以在函数中使用它?
更新:dll入口点很常见:
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
Run Code Online (Sandbox Code Playgroud)
Dll只包含一个具有以下原型的函数:
void TestFunction(const char* ua);
Run Code Online (Sandbox Code Playgroud)
调用该函数的代码是:
CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)((void*)codecaveExecAddr), (LPVOID)argumentAddress, 0, NULL);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我尝试在TestFunction中传递"test"字符串.但后来我检查了TestFunction中的ua参数,它包含了一些垃圾.
以下是整个项目文件:
http://pastebin.com/gh4SnhmV
http://pastebin.com/Sq7hpSVx
http://pastebin.com/dvgXpUYz
更新2
TestFunction应该有一些特定的指标,或者我可以使用任何只要它只有一个LPVOID类型的参数?我糊涂了.谁能给我一个如何用一些参数调用注入的dll函数的例子?
您需要在其他进程的内存中分配数据.为此,使用VirtualAllocEx函数,该函数将返回传递给CreateRemoteThread的其他进程内存中的地址.
CreateRemoteThread的工作方式与CreateThread完全相同,只是它在远程进程中创建线程.要记住的一件事是,当您在lpParameter中传递指向对象的指针时,在不同虚拟地址空间中运行的远程线程将尝试访问该地址空间中的该地址.