그래서 DLL을 주입 한 다른 응용 프로그램을 시작하는 응용 프로그램이 있습니다 (Detours와 함께). 진입 점은 DllMain입니다. 나는 DllMain에서 많은 것을 할 수없고 확실히 반복 할 수 없다. 그렇다면 x 초마다 DLL 모니터 기능을 어떻게 호출합니까? DllMain에서 스레드를 생성 할 수 없다는 것을 읽었습니다 (적어도 반환 할 때까지). 그래서 첨부 스레드 이벤트에서 그것을 만들려고했는데 그것은 나를 추락시켰다. 그래서 지금 내가하려고하는 것은 모듈 핸들을 얻을 수 있도록 다시 주입하는 것입니다 (Detours가 실패 함). 그런 다음 스레드를 생성하는 초기화 함수의 주소를 얻습니다. 모듈 처리 괜찮아요,하지만 함수 주소를 얻을 수 있다고 생각하지 않습니다. 나는 그 기능을 비웠다. 그리고 그것은 아직도 나를 붕괴시켰다. 따라서 함수를 호출하는 것까지까지 도달하지 못합니다. Visual Studio에 내가 읽기 권한이 없다고했습니다.내부에 루프를 주입 한 DLL은 어디에 있습니까?
그럼 어떻게해야합니까? 첨부 된 프로그램 (exe)을 소유하지 않은 경우 DLL 기능을 루프하기 위해 무엇을합니까?
//Application.exe
STARTUPINFO si = {sizeof(STARTUPINFO)};
PROCESS_INFORMATION pi = {0};
DetourCreateProcessWithDll(filename, NULL, NULL, NULL, TRUE,
CREATE_DEFAULT_ERROR_MODE | CREATE_SUSPENDED, NULL, path,
&si, &pi, detoured, hook, NULL);
processID = pi.dwProcessId;
hDll = InjectDLL(processID, hook);
if(hDll != NULL)
{
STARTER Starter = (STARTER)GetProcAddress(hDll, "Starter");
if(Starter != NULL)
Starter();
}
ResumeThread(pi.hThread);
기능 초보자는 extern C가 내보내지고 정밀하게 검사됩니다 (서수 1 임).
나는 무엇이 잘못 될 수 있는지 전혀 몰랐으며 단지 누군가가이 주제에 대한 경험이 있고 충돌하는 것을 희망합니다. 여기
는 DLL 코드입니다 : DLL이 다른 프로세스에 주입되기 때문에