게임 핵 이해하기

CTF수상까지...!!·2023년 11월 16일
0

먼저, 게임 구동을 이해해보자.

  1. 게임 서버가 존재한다.
  2. 이 서버에 여러 개의 client가 접속하여 만난다.
  3. client 1번의 user가 이동을 하게 되면, 서버에 client 1번이 이동한 정보가 전송된다.
  4. 그런 후 서버는 client 1번 근처에 있는 client 들을 검색하고, 검색된 client 들에게 client 1번이 이동한 정보를 전송해준다.

온라인 게임은 이런식으로 진행된다. (전투, 이동 등)


게임 핵은 서버를 건드릴 수는 없고, client를 변조하여 이루어 진다. 그리고, 게임은 하나의 애플리케이션이다.

게임 핵, 매크로 종류

1. 하드웨어를 이용한 매크로

-> 게임 사 측에서 물증을 확보할 수 없기 때문에 잡을 수 없다...
-> 불법적으로 해당 컴퓨터의 레지스트리를 확인하지 않는 이상 불가능 할 것이다.
-> 몇몇 불법 프로그램 자체를 막는 등의 임시 조치 정도 가능하다..

2. 클라이언트 변조를 통한 별도의 소프트웨어 이용하는 경우(스피드 핵 , 순간이동 등...)

-> 자신의 데이터를 변조하여 서버로 전송하는 방법이다.
-> 기술적으로는 게임사에서 추적할 수 있다.
-> 서버에 보안 로직을 추가하는 것으로 방어할 수 있다. (1초 동안 유저가 이동할 수 있는 거리를 파악하는 등..) 그러나, 이 로직이 들어가는 순간 연산이 너무 많아져서 서버에 부하가 걸린다.
-> 혹은 로그 데이터 정보를 바탕으로 추적이 가능하다.(이것도 데이터가 너무 방대해져서...ㅠ)

3. 단순 반복적 매크로

-> 외부 프로그램을 사용하여 단순 반복 작업을 시키는 것이다.
-> 예를 들어, 방향키 누름을 통한 움직임, 스킬 실행, 포션 먹는 것 등의 키가 눌리게 반복 설정.
-> 그러면 운영체제 단에서 외부 프로그램을 막아야 하는데, 이게 게임 단에서는 불가능하다.

4. 헬퍼 시스템 같은 응용적 핵(클라이언트의 데이터 변조 보다는 참조하는 식의 프로그램 = 시야 핵, 에임핵, 투명 핵 등...)

-> 클라이언트 데이터를 참조해서 외부 프로그램을 사용하여 클라이언트 내에서 자체적으로 변조하는 것이기 때문에 서버에 흔적이 남지 않는다.
-> 예를 들어, 마인크래프트의 광물 중 다이아 몬드 외에 광물(지형이나 광물 등)은 투명하게 보이도록 그래픽 텍스쳐 파일을 깨트리면 투명하게 보이게 된다.  
-> 이런 것에 대한 보안 정책으로 검증 절차 등을 넣기도 하는데, 근본적인 해결 방법은 아니다.

시야핵

  1. client에게 있는 정보로만 만드는 핵.(근접)
    먼저, MMORPG나 배틀그라운드 등의 필드 게임에서 client 에게는 시야보다 넓은 1.2~1.5배의 위치 데이터가 전송된다.(게임의 끊김이나 이상 현상을 줄이기 위해서...시야와 위치 데이터가 같으면 다른 client가 갑자기 나타난다 던지 날아다닌다 든지 등등...)
    따라서, 이 client에게 전송된 위치 데이터 만으로도 client의 실제 시야에 들어오기 전부터 다른 client의 위치 정보를 알 수 있다.
profile
보안 공부...내 공부...

0개의 댓글