Учу С++. Интересен способ инъекции 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.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Например ввести команду ls, и считать список файлов в директории
Мне нужно написать функции которые добавляют и удаляют значения в QVector