2016-12-13 14 views
1

나는 curiosty로 이것을하고, 게임에서 소스 코드를 수정하지 않고 오버레이를 만들고 싶기 때문에 DLL injection을 처음 접했습니다.C++ : Dll injection. CreateRemoteThread()가 메모장에서 실패하는 이유는 무엇입니까?

하지만 지금은 기본 DLL 주입이 필요합니다. CreateRemoteThread()를 사용하는 것입니다.

내가 (프랑스어에주의 하시고)이 튜토리얼을 따라

: http://xevia.webege.com/old/atoray/2010/06180.php

내가 무슨 짓을 :

  • 주입 기본적인 프로그램에 잘 작동 Target.exe (Xevia의 링크를 참조)
  • EnumProcessModules()가있는 프로세스에서로드 한 DLL을 볼 수 있습니다.
  • Target.exe에 삽입 한 후 "Hook.dll"이 추가 된 것을 볼 수 있습니다. 메모장 내 인젝터 모두 32 비트

있습니다하지만 다른 프로세스에 DLL을 주입 할 때,하는 CreateRemoteThread()를 수행하더라도 작동하는 것 같다하지 않습니다

  • [편집] EXE 파일의 버전을 검사 NULL을 반환하지 않습니다. 본 프로그램 포함

    그래서 체크 한 많은 게시물 : How do I prevent DLL injection

    그리고이 하나가 : C++ - CreateRemoteThread DLL Injection [Windows 7] 정말 무엇을 지적 할 수없이,

    그리고 많은 다른 사람 (성공하지 않고, 절대 경로를 시도) 틀 렸습니다. 그래서 저는 SO 신을 호출합니다.

    1) 액세스 권한 문제 일 수 있습니까?

    2) 너무 고전적인 주사 방법 일 수 있습니까? 어느 것을 시도해야합니까?

    3) [항목 관련 질문] 왜 내 DLL이 CreateRemoteThread와 함께 메모장에 삽입되지 않았습니까?

    감사합니다.

    [문법/제형 편집 가능]

  • +0

    dll의 절대 경로 또는 단순히 dll 이름을 사용 했습니까? –

    +0

    나는 절대 경로와 상대 경로를 모두 시도했다. 둘 다 내 "target.exe"에서 작동했지만 "notepad ++. exe"에서는 작동하지 않습니다. 또한 x64/x86 빌드를 확인했습니다. – Greg

    답변

    0

    작동합니다!

    나는 변경할 필요가 무엇 :

    • 빌드 86에서 대상 응용 프로그램
    • 사용 절대 경로와 일치하기 위해

    나는 둘 다했지만 내 절대 경로 때를 변경하는 것을 잊었다 x86/x64 간의 전환 ...

    덕분에 Adrian Roman, 누가 올바른 방법으로 나를 넣었습니까?