【发布时间】:2015-01-24 00:26:09
【问题描述】:
我一直在尝试从一个“注入器”程序切换我不拥有的程序的 Dll 目录,该程序假设切换 Dll 加载目录以加载修改或点击的 Dll。
函数如下:
void AddDirectory(HANDLE Handle, const char* DllPath)
{
void *Function, *String;
Function = (void*)(SetDllDirectoryA);
String = (void*)VirtualAllocEx(Handle, NULL, strlen(DllPath), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
CreateRemoteThread(Handle, NULL, NULL, (LPTHREAD_START_ROUTINE)Function, (void*)String, NULL, NULL);
}
我不明白为什么这不起作用?
【问题讨论】:
-
您从未传输过字符串内容,您所做的只是为它分配空间,它将被零填充。与调用
SetDllDirectoryA("");的效果相同 -
此外,如果您在 DLL 已加载后更改搜索路径,它可能永远不会为您提供所需的行为。
-
谢谢,我完全错过了!对你的两个回答进行投票。
标签: c++ createremotethread setdlldirectory