我已经构建了一个程序,可以将.dll注入另一个进程的堆内存中并且可以工作。我也有一个小工具(已下载),可以从该dll调用该函数。但是我想将其写入我自己的程序中。
HANDLE phandle = OpenProcess(...);
LPVOID rdllname = VirtualAllocEx(phandle, ...);
BOOL bret = WriteProcessMemory(phandle, rdllname, dllname, ...)
FARPROC loadlibrary = GetProcAddress()
我认为我可以通过创建一个远程线程来调用注入的dll中的函数
HANDLE thandle = CreateRemoteThread(phandle, NULL, 0, (LPTHREAD_START_ROUTINE) loadlibrary, rdllname, "info", NULL);
但是它没有调用我的函数(名为info())。有人可以告诉我为什么吗?
编辑:我以为我可以解决
typedef void (*startThreadFunc)();
HINSTANCE getDLLFunc = LoadLibrary("C:\\Users\\manuel\\desktop\\dll.dll");
startThreadFunc startThreadFuncVar = (startThreadFunc)GetProcAddress(getDLLFunc, "info");
startThreadFuncVar();
FreeLibrary(getDLLFunc);
但是它不被解决!我已经看到,DLL并没有按照我想要的那样从PID内加载。即使我只调用那段代码,它也将加载DLL并调用该函数,但它是独立的。所以它没有解决:(再次需要您的帮助。