>백엔드 개발 >C++ >CreateProcess가 EXE를 파일에 저장하지 않고 메모리에서 직접 실행할 수 있습니까?

CreateProcess가 EXE를 파일에 저장하지 않고 메모리에서 직접 실행할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-02 13:05:02485검색

Can CreateProcess Execute an EXE Directly from Memory Without Saving It to a File?

메모리 버퍼의 CreateProcess

질문:

다음 콘텐츠에 대해 CreateProcess를 호출할 수 있습니까? 먼저 파일에 쓰지 않고 메모리 버퍼에 저장된 EXE를 사용하시겠습니까?

배경:

패치 게임 충돌 시 DRM 지연을 우회하려는 시도에서 방법은 다음과 같습니다. 외부 EXE 내에서 실제 EXE를 해독하고 실행하려고 합니다.

답변:

CreateProcess는 실제로 EXE가 포함된 메모리 버퍼에서 호출될 수 있습니다. 사전 파일 작성 없이 실행됩니다. 단계에는 다음이 포함됩니다.

  1. CREATE_SUSPENDED 플래그와 함께 CreateProcess를 사용하여 프로세스를 일시 중지합니다.
  2. [EBX 8]에 저장된 PEB의 ImageBaseAddress와 함께 GetThreadContext를 사용하여 스레드 컨텍스트를 검색합니다.
  3. 일시 중지된 프로세스와 메모리 내 EXE의 기본 주소와 이미지 크기를 비교합니다.
  4. 조건이 허용하는 경우 WriteProcessMemory를 사용하여 일시 중지된 프로세스의 메모리에 인 메모리 EXE를 씁니다.
  5. 매핑 해제 정지된 프로세스에 메모리를 할당하고 조건이 허용되지 않으면 메모리 내 EXE를 작성합니다.
  6. 스레드 컨텍스트에서 기본 주소와 진입점을 패치합니다.
  7. 재개 ResumeThread를 사용하여 프로세스를 일시 중지했습니다.

위 내용은 CreateProcess가 EXE를 파일에 저장하지 않고 메모리에서 직접 실행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.