포스트

패킷 스니핑과 커널 레벨 후킹

패킷 스니핑과 커널 레벨 후킹

1. 🔰 마비노기 모바일 딜 미터기 논란

news

최근 플레이 하는 게임에서 플레이어의 데미지를 실시간으로 보여주는 이른바 딜 미터기(DPS Meter)가 논쟁의 중심에 섰다.

레이드 요구사항을 맞춘 8명의 플레이어가 도전했음에도 불구하고, 딜 부족으로 실패하는 경우가 종종 발생했다. 이에 일부 유저들은 자신들의 전투 플레이 피드백과 원활한 공략을 위해 파이널 판타지 14의 ACT(Advanced Combat Tracker, 일명 해루봇)나 월드 오브 워크래프트의 Details! 같은 딜 미터기를 제작하여 배포했다.

딜 미터기의 찬반 논란이나 이점, 부작용 등은 이 글에서 다루지 않고, 어떻게 이런 도구들이 게임 내부 데이터를 실시간으로 파악하는지에 대해 알아보도록 하겠다.

대표적으로는 패킷 스니핑커널 레벨 후킹이 있으며, 목적에 따라 다양한 분석 기법이 사용된다.


2. 📡패킷 스니핑

2-1. 패킷 스니핑이란?

패킷(packet)은 pack과 bucket의 합성어로, 네트워크를 통해 전송하기 쉽도록 자른 데이터의 전송 단위이고,

스니핑(Sniffing) 은 개가 킁킁대면서 냄새를 맡으며 무언가를 찾으러 돌아다니는 행위를 말한다.

패킷 스니핑(Packet Sniffing)은 네트워크를 통해 전달되는 데이터를 실시간으로 감시하는 기술이다.

쉽게 말해 중간에서 남의 우편물을 몰래 확인하는 것과 같다.

2-2. 주요 도구

wireshark

WireShark

네트워크 패킷 감시용으로 가장 널리 알려진 프로그램이다.

무료로 사용 가능하고, GUI를 제공하여 쉽게 사용할 수 있으며, 윈도우나 리눅스 외 다양한 OS에서 사용 가능하다.

tcpdump

tcpdump

커맨드 라인에서 실행하는 패킷 스니핑 소프트웨어다.

대부분의 리눅스/유닉스 계열 운영체제에서 동작하며 와이어샤크보다 가볍다.

패킷 캡처와 저장에 중점을 두며, 필터링 기능을 지원하지만 패킷을 직접 디코딩하거나 변환해야 한다.

scapy

Scapy

파이썬에서 제공하는 네트워크 패킷 전송, 분석 및 스니핑 기능을 지원하는 라이브러리다.

패킷을 위조하거나 해석할 수 있으며, 캡처하고 요청하는 등의 다양한 작업을 수행할 수 있다.

2-3. 활용 예시

  • 네트워크 성능 최적화
  • 서버-클라이언트간의 통신 패턴 분석
  • 치팅 탐지 시스템 개발
  • 네트워크 보안 모니터링
  • 성능 병목지점 파악
  • 프로토콜 분석 및 디버깅 등

2-4. 한계점

패킷 스니핑의 주요 한계점은 다음과 같다:

  • 암호화 문제: HTTPS, TLS 등으로 암호화된 데이터는 내용 확인이 불가능하다. 게임사에서는 중요한 데이터를 대부분 암호화하여 전송한다.
  • 네트워크 의존성: 패킷이 전송되어야만 확인이 가능하므로 게임 내부에서만 처리되는 로컬 데이터는 알 수 없다.
  • 성능 이슈: 대용량 트래픽 환경에서는 수많은 패킷을 분석해야 하므로 성능이 떨어진다.

3. 🖥커널 레벨 후킹 + 메모리 매핑

3-1. 커널 후킹이란?

커널(Kernel) 이란 운영체제의 핵심 부분으로 하드웨어와 소프트웨어 사이에서 인터페이스 역할을 한다. 두 계층 사이에서 모든 요청을 관리하고 처리한다.

후킹(Hooking) 이란 특정 함수나 이벤트의 동작을 가로채고, 그 동작을 수정하거나 다른 기능을 수행하도록 만드는 기술이다.

커널 후킹은 OS 커널에 접근해 게임 클라이언트 내부 메모리를 조작하거나 후킹하는 기술로,

게임이 운영체제에게 메모리를 읽거나 파일을 쓸 때 이 요청을 중간에서 가로채서 정보를 얻는 방식이다.

3-2. 메모리 매핑이란?

메모리 매핑은 다른 프로그램의 메모리 영역에 직접 접근하는 기술이다.

각 프로그램마다 RAM이라는 자신만의 작업 영역을 가지고 있는데, 이를 직접 들여다보는 것이다.

3-3. 주요 툴 및 기술

일반적으로 C/C++ 언어를 사용하여 Microsoft Detours 라이브러리를 통해 윈도우 API를 후킹하는 방법이 많이 사용된다.

cheatEngine

CheatEngine

가장 유명한 메모리/헥스 에디터 프로그램 및 디버거다.

윈도우 환경에서 메모리 스캐너 및 디버거 역할을 하는 프로그램으로, 메모리를 직접 수정해서 다양한 요소를 확인하고 수정할 수 있다.

이외에도 텍스트를 후킹하여 번역해주는 도구들도 후커(Hooker)라고 불린다.

3-4. 후킹 방식

다양한 후킹 방식이 존재한다:

  1. IAT(Import Address Table) 수정
    • 프로세스가 외부 라이브러리의 API를 호출할 때 IAT라는 테이블을 참조하는데, 이를 수정하여 타겟 함수의 주소를 후킹 함수의 주소로 바꾸는 방법
    • 후킹 방식 중에서는 쉬운 방법이나, IAT에 없는 API는 후킹할 수 없다
  2. EAT(Export Address Table) 수정
    • DLL이 외부에 제공하는 함수들의 주소를 저장한 테이블인 EAT 테이블을 수정하는 방식
    • IAT와 유사하게 외부에서 호출되는 함수의 동작을 수정함
  3. Code Patch
    • 직접 API의 코드를 패치하여 후킹 함수로 이동하도록 수정하는 방식
    • 가장 강력한 방식이지만, 코드 자체를 수정하므로 어셈블리어를 사용해야 하며 난이도가 높고 CPU 아키텍처나 운영체제에 따라 동작이 달라질 수도 있음

게임 프로세스를 후킹한다면 아래와 같이 동작한다:

1
2
3
4
5
6
7
8
9
10
11
12
13
게임 프로세스
    ↓ (시스템 호출)
커널 레벨 후킹 모듈 ← 여기서 데이터 가로챔
    ↓
운영체제 커널
    ↓
하드웨어

1. 게임이 메모리나 파일에 접근 요청
2. 후킹 모듈이 이 요청을 가로챔
3. 필요 데이터를 추출하고 분석
4. 원래 요청을 운영체제에 전달
5. 결과를 다시 게임에게 반환

3-5. 활용 예시

  • 게임 데이터 분석 : 메모리 매핑을 통해 게임 내 표기되지 않은 데이터 참조
  • 보안 연구 : 악성 행위를 감시하거나, 메모리 변조를 탐지
  • 성능 최적화 : 메모리 사용량 프로파일링 및 병목 지점 확인

3-6. 한계점

커널 후킹은 매우 강력한 기법이지만 그에 따른 위험성도 크다.

  • 시스템 안정성: 메모리와 OS를 직접 건드리므로 시스템 크래시나 메모리 손상이 일어날 수 있다.
  • 탐지 위험: 대부분의 안티치트 프로그램들은 커널 후킹 및 메모리 매핑 시도를 탐지한다.
  • 기술적 복잡성: 구현과 유지보수가 매우 어렵다.

4. 패킷 스니핑 vs 커널 후킹

항목패킷 스니핑커널 레벨 후킹
기술적 난이도⭐⭐☆☆☆⭐⭐⭐⭐⭐
위험성⭐⭐☆☆☆⭐⭐⭐⭐⭐
데이터 접근 범위네트워크 통신만모든 메모리 데이터
실시간 성능보통우수
암호화 대응제한적우수
탐지 가능성낮음높음
개발 시간짧음매우 김
유지보수쉬움매우 어려움

패킷 스니핑을 선택하는 경우:

  • 네트워크 성능 분석이 주 목적
  • 안정성이 최우선
  • 빠른 개발과 배포가 필요할 때

커널 레벨 후킹을 선택하는 경우:

  • 게임 내부 데이터에 직접 접근 필요
  • 실시간 고성능 처리 요구
  • 암호화된 데이터 분석 필요할 때

5. ⚠️주의사항

당연하게도 대부분의 온라인 게임은 이용약관에서 클라이언트 분석을 금지하고 있다

위반 시 계정 정지 혹은 영구 밴을 당할 수도 있고, 상업적 이용시 법적으로 고소당할 수 있다

또한, 리버스 엔지니어링은 지적 저작권 침해 가능성이 있으므로, 분석 결과의 공개나 배포는 신중해야한다.

특히 게임사는 숨겨진 수치로 게임의 밸런스를 잡는 경우가 많으므로 딜 미터기 공개를 매우 꺼린다.

유료 재화의 가치 하락으로 연결될 수 있기 때문이다.


6. 💡세줄 요약

  1. 패킷 스니핑은 비교적 안전하고 쉬우나, 암호화 및 로컬 데이터 접근에 한계가 있다.
  2. 커널 후킹은 강력한 기술이지만, 높은 난이도와 시스템 위험이 따른다.
  3. 두 방식 모두 게임 약관 위반 및 법적 문제 소지가 있다.

7. 참고 링크

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.