Я создал программу для вставки 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 и вызовет функцию, но как автономный. Так что это не решено :( Нужна ваша помощь снова.