Почему код не инъектируется в процесс?

Сама функция инжектора:

bool Inject(DWORD pID, char* path)
{
 if (pID == 0)return 0; 
 HANDLE proc_handle = OpenProcess(PROCESS_ALL_ACCESS, false, pID);
 if (proc_handle == 0)return false;
 LPCVOID LoadLibAddy = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");
 LPVOID RemoteString = VirtualAllocEx(proc_handle, NULL, strlen(path), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
 WriteProcessMemory(proc_handle, RemoteString, path, strlen(path)+1, NULL);
 CreateRemoteThread(proc_handle, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddy, RemoteString, NULL, NULL);
 CloseHandle(proc_handle);
 return 1;
}

Код инъектируемой dll:

BOOL APIENTRY DllMain( HMODULE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)
{
 MessageBox(NULL, L"enter dll", L"messge dll", MB_OK);
 if (ul_reason_for_call == DLL_PROCESS_ATTACH)
 {
    MessageBox(NULL, L"DLL_PROCESS_ATTACH", L"messge dll", MB_OK);
 }
return TRUE;
}

Я написал подопытную программу и заинжектил в нее dll,все сработало и окошко с уведомлением вылезло.Но если попробовать заинжектить,например в калькулятор,то ничего не происходит,но и никаких ошибок при этом нет.В чем может быть дело?


Ответы (0 шт):