인터넷이나 나뭇잎책으로 수십번 보며 비교를 했는데
더이상 틀린곳이 없는거 같은데 인젝션이 안됩니다.
에러나 워닝도 없고 그냥 끝까지 실행은 되는데 인젝션 기능이 안되요
다른 프로그래밍 카페에서도 도움을 청했는데 해결을 못하여 혹시나해서 질문 드립ㄴ다!
void injection(DWORD dwPid, LPCTSTR szDllPath)
{
HANDLE hProcess, hThread;
HMODULE hKernel32;
LPTHREAD_START_ROUTINE pThreadProc;
LPVOID pLibbuf;
//PROCESSENTRY32 pe = { sizeof(pe) }; // 추가로 시도해본 것
int nLen= strlen(szDllPath)+1;
//pe.th32ProcessID = dwPid; // 추가로 시도해본 것
if ( !(hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid)) )
{
printf("failed");
}
pLibbuf = VirtualAllocEx(hProcess, NULL, nLen, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess, pLibbuf, (LPVOID)szDllPath, nLen, NULL);
hKernel32 = GetModuleHandle("kernel32.dll");
pThreadProc = (LPTHREAD_START_ROUTINE)GetProcAddress(hKernel32, "LoadLibraryA");
hThread = CreateRemoteThread(hProcess, NULL, 0, pThreadProc, pLibbuf, 0, NULL);
WaitForSingleObject(hThread,INFINITE);
CloseHandle(hThread);
CloseHandle(hProcess);
}
메인함수
DWORD dwPid;
char dll_path[20];
printf("프로세스 ID를 입력하세요");
scanf("%d",&dwPid);
printf("dll경로를 입력하세요");
scanf("%s",dll_path);
injection(dwPid,dll_path); |