首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dll注入使用参数执行CreateRemoteThread

Dll注入使用参数执行CreateRemoteThread
EN

Stack Overflow用户
提问于 2011-07-05 11:43:20
回答 1查看 7.6K关注 0票数 3

我写了dll注入程序,工作得很好。它将dll加载到远程进程中,并调用一些函数。现在我想把参数传递给这个函数。CreateRemoteThread有lpParameter,但是如何在dll中获得传递的参数以便在函数中使用它?

更新:dll入口点很常见:

代码语言:javascript
复制
BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)

Dll只包含一个具有以下原型的函数:

代码语言:javascript
复制
void TestFunction(const char* ua);

调用该函数的代码是:

代码语言:javascript
复制
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应该有一些特定的类型,还是只要它只有一个LPVOID类型的参数,我就可以使用它?我很困惑。有人能给我举个例子,说明如何用一些参数调用注入的dll函数吗?

EN

回答 1

Stack Overflow用户

发布于 2011-07-05 12:24:04

您需要在另一个进程的内存中分配数据。为此,使用VirtualAllocEx函数,它将返回传递给CreateRemoteThread的另一个进程内存中的地址。

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6582096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档