Учу С++. Интересен способ инъекции DLL в свой процесс. Нашёл библиотеку смотреть на codepad, делает Inject в сторонний процесс, посредством вызова CreateProcess
CreateProcessW(NULL, Path, NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE | CREATE_SUSPENDED, NULL, NULL, &si, &pi);
if (ok)
{
DbgPrint("CreateProcessW ok, %d", pi.dwProcessId);
ok = (NO_ERROR == AcInjectDll(&pi, CREATE_SUSPENDED, TRUE));
//AcInjectDll(&pi, CREATE_SUSPENDED, TRUE);
DbgPrint("AcInjectDll %s", ok ? "ok" : "FAIL");
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
else
DbgPrint("CreateProcessW FAIL");
Но, функция после отработки отдает fail. Конечно, при этом никакой DLL'ки не прогрузилось, а поток остался зависшим у вызываемого процесса.
Где может быть ошибка? За ранее спасибо!
Чтобы загрузить DLL в свой процесс, не нужна никакая "инъекция". Для этого достаточно использовать функцию LoadLibrary.
Об "инъекции DLL" говорят, когда нужно заставить чужой процесс загрузить вашу DLL. Для этих целей нельзя использовать CreateProcess (эта функция делает только то, что написано - создает процесс). Это можно сделать несколькими способами, например с использованием WriteProcessMemory и CreateRemoteThread или RtlRemoteCall.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости