我正在反射性地将 dll 注入另一个进程的内存中,显然我需要调用 CreateThread()。我将某些参数传递给我使用 loader_data 结构注入的 dll。我有一些我需要传递的变量,例如一块内存的大小等。这些都成功地传递给我注入的 dll,但是当将 char* 传递到我的结构中时,它最终在保留的注入 dll 中为空DllMain 的参数。
loader_data_t *parameter = new loader_data_t();
... initialize variables.
lpRemoteLibraryBuffer3 = VirtualAllocEx(proc, NULL, sizeof(loader_data_t), MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(proc, lpRemoteLibraryBuffer3, parameter, sizeof(loader_data_t), NULL);
这就是我为参数分配空间的方式。
typedef struct loader_data_t {
char *chunk;
int chunk_size;
ULONG_PTR reloc_address;
};
这就是我要传递的结构。我肯定会正确初始化它,我已经检查以确保一切都正确设置。但是,当它被传递给 DllMain 中的保留参数时,所有其他变量都是正确的,除了 char* 块变量。我真的很困惑,请原谅可能含糊的标题。