본 게시글은 메모리에 대한 깊은 이해를 위해 에이콘 출판사의 "봇을 이용한 게임 해킹" 서적을 보고 필기한 자료입니다.
따라서 디테일한 부분에서 본 서적의 실제 내용과 다를 수 있고 글쓴이의 주관이 들어가 있음을 참고해주시기 바랍니다.
문제 시 비공개 처리하도록 하겠습니다.
치트 엔진
- 게임 내의 메모리를 스캔할 수 있는 도구
- 메모리에는 HP, 공격력, 레벨 등 캐릭터에 민감한 데이터들이 올라와 있다.
- 목표로 하는 메모리의 값을 임의적으로 변화시키면서 오류를 줄여나가고 결국 해당 메모리 값을 추출할 수 있다.
포인터 스캐닝
- 포인터 체인을 사용하는 이유는 대규모 동적 메모리 할당이 발생할 때
- 게임 코드가 이를 참조할 수 있는 정적 주소가 대응되어야 하기 때문
- 게임 해커들은 포인터 체인을 찾아서 메모리에 접근할 수 있다.
올리 디버거
- 치트엔진을 통한 게임 해킹은 표면에 흠집을 내는 수준이다.
- 올리 디버거는 조건부 브레이크 포인트, 스트링 검색, 어셈블리 패턴 검색 등 다양한 기능을 제공한다.
멀티 클라이언트 패치라고 불리는 해킹 기법
- 하나의 인스턴스만 수행 가능하도록 작성된 게임 바이너리에 추가적인 코드 작성 없이 또 켜는 것
- 이를 통해 여러 개의 클라이언트를 실행하는 것이 금지된 게임에서도 가능하게 한다.
- 여러 개의 인스턴스를 허용하지 않는 코드는 게임 클라이언트가 실행된 그 즉시 수행됨
- 봇을 사용해 패치를 제때 수행하는 것은 불가능에 가까움
- 가장 쉬운 우회 방법은 올리디버거를 이용해 멀티 클라이언트 패치를 지속적으로 수행, 게임 바이너리에 직접 저장
코드 패치 제작하기
- 올리 디버거의 코드패치로 어셈블리 코드를 수정해 게임을 해킹할 수 있다.
- 자체적으로 패치 설계 및 테스트하는 기능을 제공하고 수정된 코드를 실행파일로 저장 가능
패치를 적용하려면?
- CPU창에서 패치가 필요한 어셈 코드라인을 찾는다.
- Disassembly 열의 항목 더블클릭 및 팝업된 창에 명령어 입력 후 엔터
패치 시 주의 사항
- 패치할 때 크기에 주의를 기울여야 한다.
- 한번 패치를 제작하고 나면 크기를 재조정할 수 없고 수정이 불가함
- 대체하고자 하는 코드의 크기가 기존 코드보다 크면 오버플로우 유발
- 기존 코드보다 작으면 Fill with NOP 항목이 체크되어 있으면 안-전
- 이 옵션은 남는 바이트는 NOP으로 채우는 것
프로세스 모니터
- 프로세스 모니터는 다양한 이벤트를 실시간으로 기록하는 강력한 모니터링 툴
- 게임이 레지스트리와 파일시스템, 네트워크와 상호작용하는 방법을 연구하면 많은 것을 알 수 있다.
- 게임이 외부환경과 상호작용하는데 관련된 유용한 데이터 수집 가능
인게임 이벤트로그 남기기
- 프로세스 모니터는 유용하게 쓰일 가능성이 있는 모든 이벤트 저장 가능함
- 가장 실용적인 활용법은 인게임 아이템, 파일 같은 데이터 파일이 어디에 저장되는지 파악하는 것.
프로세스 모니터 로그의 이벤트 조사
- 이벤트와 관련된 모든 데이터 포인트를 기록함
- 이벤트와 관련된 파일을 통해 얻는 것보다 더 많은 배울 수 있음
프로세스 익스플로러
- 좀 더 발전된 형태의 작업관리자
- 게임이 어떻게 동작하는지 이해하기 위해 필요한 첫 번째 툴
- 파일이나 뮤택스와 같이 게임과 밀접한 관계를 가진 전역 객체들에 대해 유용한 정보를 얻음
- 특히 ASRL 상태를 얻을 수 있는데, 메모리를 읽는 방법에 영향을 미치므로 중요함
'게임 보안 > [서적] 봇을 이용한 게임 해킹' 카테고리의 다른 글
6. 코드 인젝션 (1) | 2022.10.01 |
---|---|
5. 게임 메모리 읽고 쓰기 (1) | 2022.09.29 |
4. 고급 메모리 포렌식 (0) | 2022.09.28 |
3. x86 어셈블리 크래시 코스 (1) | 2022.09.28 |
2. 코드에서 메모리로 - 기본 원리 (2) | 2022.09.24 |
댓글