ABOUT ME

Today
Yesterday
Total
  • 게임 보안 프로그램이 게임의 메모리 변조를 탐지 하는 방식
    프로그래밍/해킹/보안 2025. 3. 26. 16:28
    반응형

    게임 보안 프로그램은 치트나 핵을 탐지하기 위해 다양한 기술을 사용합니다.

    그중 대표적인 기법 중 하나가 바로 메모리 무결성 검사, 특히 CRC(Cyclic Redundancy Check) 혹은 해시 기반 검사를 활용한 방식입니다.

     

    게임 보호를 위한 CRC 검사 방식과, 보안 프로그램이 메모리를 감시하는 전체적인 구조에 대해 간단히 소개 합니다.

     

    CRC 검사란?

    CRC는 데이터의 무결성을 확인하는 데 사용되는 간단하면서도 강력한 해시 함수입니다. 게임 보안에서는 특정 메모리 영역이 변조되지 않았는지 주기적으로 검사하는 용도로 사용됩니다.

     

     

    보안 프로그램의 일반적인 구조

    보안 모듈은 아래와 같은 구조로 게임 프로세스를 감시합니다:

    1. 자식 프로세스로 실행

    게임 실행 시 보안 모듈이 함께 실행되며, 부모 프로세스(게임)를 지속적으로 감시합니다.

    2. 상주 프로세스로 동작

    Riot Vanguard처럼 윈도우 부팅 시 커널 드라이버로 로딩되어 시스템 전반을 감시하는 방식도 있습니다.

    3. 메모리 스캔과 CRC 검사

    주기적으로 게임 프로세스의 특정 메모리 영역을 읽어들여 CRC 또는 해시값을 비교함으로써 변조 여부를 판단합니다.

     

    CRC 검사 방식의 흐름

    1. 초기 상태 저장
      • 게임 실행 시 주요 메모리 영역의 CRC 값 또는 해시값을 저장해 둠
    2. 주기적 검사 루프 실행
      • 일정 주기(예: 100ms ~ 1초)에 한 번씩 메모리를 읽어 CRC 재계산
    3. 값 비교
      • 현재 값과 초기 값을 비교하여 불일치가 발생하면 경고 또는 차단 처리

     

    검사 대상 메모리 영역

    검사 대상 설명
    .text 섹션 실행 코드 영역, 함수 시그니처 감지용
    변수 영역 게임 내 HP, 탄약, 포인트 등 핵쟁이가 자주 조작하는 데이터
    구조체 메모리 게임 클라이언트가 관리하는 상태 정보 등

     

     

    CRC 검사 우회 기법 (공격자 입장)

    • 패치 후 원복: CRC 검사 직전에 메모리를 원래 값으로 되돌림
    • CRC 검사 함수 후킹: 보안 모듈 자체를 후킹하거나, 검사 루틴을 무력화
      메모리 조작을 감지 했으나, 해당 정보가 감지 못한 정상 데이터 인 척을 하는 값을 함수의 반환값으로 전달한다.
    • 은닉된 메모리 사용: 실제 적용되는 메모리는 숨겨놓고 CRC 대상은 정상 유지

     

    END

    CRC 기반 무결성 검사는 빠르고 간단하면서도 효과적인 방식이지만, 치트 개발자들의 우회 기술도 계속 발전하고 있습니다. 따라서 보안 프로그램은 CRC 검사뿐만 아니라, 커널 드라이버, 후킹 감지, 메모리 접근 모니터링 등 다양한 기술을 조합하여 치트를 방지하고 있습니다.

    게임 보안에 관심이 있다면, CRC 검사 루틴을 이해하고 그것이 어떤 식으로 탐지 및 우회될 수 있는지를 분석하는 것이 매우 중요합니다.

     

    반응형

    댓글

Designed by Tistory.