2014-01-15 10 views
0

안녕하세요.C# 다른 프로세스에서로드 dll을 어떻게 찾을 수 있습니까?

나는 트레이너를 만들고 싶다. 게임을 속인다. 먼저 로더가 실행 중이고 메인 게임 실행 파일을로드합니다. 게임 보호 소프트웨어가 실행되고 서버에서 새 dll 파일을 다운로드하고 owerwrite를 이전 파일로 다운로드 한 후 (패치가 작동하지 않습니다.) target.dll보다 everythink okey가로드되어 실행 중입니다. dll 파일에서 어떤 오프셋 주소가 패치인지 찾습니다. 하지만 메모리에로드 할 때 어떻게 감지 할 수 있습니까? 나는,

답변

0

GetModuleHandle이 과정에서 모듈에 대한 핸들을 반환합니다 ..이 코드

IntPtr hid = GetModuleHandle("target.dll"); 
하지만 그 반환 0

OS는 W7의 SP1을

고맙습니다 인을 시도하고 있지 않다 다른 프로세스.

다른 프로세스에서 DLL로드를 모니터링하려면 모니터링 할 응용 프로그램을 "디버깅하는"디버거로 응용 프로그램을 실행해야합니다. debugging API을 사용하고 LOAD_DLL_DEBUG_EVENT 이벤트를 처리하면됩니다.

당신이 작업을 수행하는 C/C++를 사용하는 많은 필요 ...

+0

좋아요, 경우의 수 주 EXE PID를 얻을 주요 exe 인 메모리 영역 모든 스레드를 파일 .DLL 대상의 서명을 검색? 이 프로세스가 1 초 또는 2 초만로드되고 실행 중이고 죽는 경우 메모리와 패치를 2 초 내에 포착 할 수 있습니까? – KERTENKELE

+0

프로세스 메모리를 패치하려면 'WriteProcessMemory' API (http://msdn.microsoft.com/en-us/library/windows/desktop/ms681674(v=vs.85).aspx)를 사용해야합니다.). 그러나이 모든 작업을 수행하려면 먼저 프로세스의 디버거 역할을해야합니다. 얼마나 오래 걸릴지는 당신이 무엇을 어떻게 스캔하는지에 달려 있습니다. – Sean