2012-12-20 6 views
0

dll 주입의 기초를 배우려고하기 때문에 온라인에서 찾은 코드를 기반으로하는 간단한 hello-world 유형 DLL과 인젝터를 만들었습니다. 상자에서 나온 모든 것을 찾을 수 없었기 때문에 몇 가지 조정을해야했습니다.CreateRemoteThread가 ERROR_ACCESS_DENIED와 함께 실패했습니다.

Injection Code , DLL Code

나는 64 비트 윈도우에서 다음을 실행 해요. Visual Studio 2010에서 컴파일 중입니다. 인젝터는 win32 콘솔 앱이고 dll은 win32입니다. 내 코드를 기존 메모장 프로세스 (32 비트)에 삽입하려고합니다. 이 모든 것은 Windows 7 x64에서 실행됩니다.

주사기를 실행할 때마다 CreateRemoteThread에서 실패하고 GetLastError이 5 (즉 ERROR_ACCESS_DENIED)를 반환합니다. 나는 dll 경로가 정확하다는 것을 확인했다. (가짜 경로로 바꾸어도 똑같은 행동이 일어난다.) Cheat Engine을 사용하여 올바른 주소로 메모장의 메모리에 경로가 기록되고 있음을 확인했다. 이 문제를 더 디버깅하는 방법을 잘 모르기 때문에이 작업에 어려움을 겪고 있습니다.

CreateRemoteThread가 실패 할 수있는 원인은 무엇입니까?

답변

2

문제는 notepad.exe가 64 비트 창에서 64 비트 프로세스이고 32 비트 프로세스를 주입하려고했기 때문입니다.

+0

예, 동일한 문제가 발생했습니다. 플랫폼 불일치라고 말한 것처럼 보입니다. +1. –

0

나는 또한 동일한 문제를 생각해 낸다. 내 상황은 다음과 같습니다.

  1. 내 시스템은 64 비트이고 메모장도 64 비트입니다.

  2. 그러나 주사기는 32 비트 프로세스입니다.

내 솔루션은 64 비트 메모장을 시스템 디렉토리의 32 비트 메모장으로 대체하는 것입니다.

+0

기술적으로는 효과가 있지만 실제로는 심각한 대답이 아니어야합니다. 하하. –

관련 문제