我想把一个结构传递给我的dll的main,它在我的注入器中,所以基本上我想这样做:
struct structure{
char text[1024];
};
int DllMain(structure arg1,uintptr_t arg2,uintptr_t arg3);
然而,我想知道如何让我的注入器通过结构。顺便说一下,我手动映射dll。
不能将自定义参数传递给DllMain()
。签名是固定的,除此之外,无论如何都不会直接调用DllMain()
,只有操作系统会调用。
您的选择是:
-
让DLL导出一个单独的函数,该函数在将DLL注入进程后调用。
-
将数据存储在DLL注入后可以访问的共享内存块中。
-
在DLL和注入器之间设置进程间通信通道,例如使用命名管道或套接字。
在DLL中添加一个与结构大小相同或固定大小更大的资源,内容无关紧要,稍后会覆盖它,它基本上是一个存根。
在手动映射之前,将DLL加载到注入器的本地内存中
用您的数据覆盖此资源。
手动将DLL映射到目标进程
访问资源以获得所需的数据