상단영역

본문영역

[심층기획] 끝나지 않는 전쟁 <1>

  • 안일범 기자 nant@kyunghyang.com
  • 입력 2007.05.07 12:53
  • 글씨크기
이 기사를 공유합니다

해커와 크래커간의 막고 뚫는 전쟁은 어제 오늘일이 아니다. 컴퓨터 언어가 등장함과 동시에 이같은 기술이 발전해왔고, 이제는 온라인 게임 까지 해킹으로 골머리를 앓고 있는 실정이다. 심지어 최근에는 한 고등학교 1학년생 해커가 N사의 게임 보안 프로그램을 해킹할 정도로 상황은 심각해졌다.
어떤 게임이던 간단한 웹 검색만으로도 게임 핵을 구할 수 있다. 이로 인해 막대한 피해를 입을 수 있음을 언급하는 것조차 식상할 정도로 이미 일반화된 문제다. 그렇다면 도대체 이 게임 핵은 어디서 오는 것인가? 또한, 누가 만드는 것인가? <경향게임스>가 실제 크래커와 보안전문가들을 만나 게임 핵의 모든 것을 알아  봤다.



ㅇ ‘게임 핵’ 넌 누구냐?


각 게임사는 자사가 서비스하는 게임의 약관을 통해 핵에 대해 정의하고 있다. 이를 종합해 보면 핵이란 유저가 비정상적 방법으로 게임 내 컨텐츠를 이용할 수 있게 해주는 프로그램이나 툴을 의미한다. 이러한 비정상적인 방법에는 익히 알려진 능력치 조작, 게임 속도 조절은 물론, 게임 컨텐츠 및 보안 시스템 파괴, 멀티 클라이언트(한 게임의 계정을 동시에 여러게 쓸 수 있는) 프로그램 등을 포함하고 있다.


게임 핵이 규제되는 가장 큰 이유는 바로 게임 밸런스 붕괴에 있다. 대부분의 게임 핵 프로그램은 유저들로 하여금 불법적인 이득을 얻을 수 있도록 제작된다. 핵 사용 유저는 능력치를 조절해 공격력, 체력을 변화시키거나 보유하고 있는 게임머니를 증가 시키는 것 외에도 이동 속도를 빠르게 한다거나 상대방을 한방에 죽일 수 있는 등 가공할만한 위력을 발휘한다. 일반 유저들이 3분 동안 싸워 상대방을 죽여야 경험치를 얻는다면, 핵 유저들은 단 1초 만에  적을 제압, 아무런 피해 없이 경험치를 얻을 수 있다. 이정도는 애교다. 상상을 초월하는 행동마저 가능하다. 따라서 핵을 사용하지 않는 유저와 막대한 차이가 벌어질 수밖에 없다. 문제는 이러한 행동이 상대방 유저들이 피해를 주는 것에 있다. 애써 게임을 해봤자 핵을 사용하는 유저를 도저히 따라잡을 수 없기 때문이다. 또한, 핵을 사용하는 유저도 반복적인 ‘작업’에 지쳐 게임에 대한 재미를 쉽사리 잃게 된다.


결국 ‘핵’ 사용은 게임의 수명을 단축시키는 결과로 이어지는 샘이다. 따라서 게임사는 핵을 규제할 수 밖에 없다.


게임 핵의 종류


게임 핵은 대부분 유저의 컴퓨터에 설치되어있는 클라이언트를 조작을 통해 탄생한다. 핵을 제작하는 방법은 제작자마다 다르며, 게임 프로그램마다 다르기 때문에 적게 잡아도 수백종에 이른다. 하지만 통상적으로 제작방식에 따라 몇 가지로 나뉘어서 분류가 가능하다. 대표적으로 파일 추가(DLL 인젝션), 메모리 후킹 방식, 패킷 조작 , 파일변조(역어셈블리라고 하며 리버스엔지니어링,  통상적으로 리버싱이라 부른다)와 같은 방법으로 제작된다.



- 파일 추가(DLL 인젝션)


⊙ 역할 : 게임 내 가능한 모든 행동을 조작 가능.
⊙ 변조방식 : 게임 클라이언트를 분석해,
                      추가 파일을 읽어오도록 만들어 이를 통해 조작.    
⊙ 이익 : 유저가 조작 가능한 모든 것을 수정할 수 있음.
              파일을 통해 인식시킬 수 있는 모든 것을 활용 가능.


핵프로그램 제작자가 클라이언트를 분석해 특정 파일을 실행하는 과정중에 파일을 추가(DLL인젝션)하도록 인식시키는 방식으로 제작된다.
이 파일에 특정 값을 계산하는 부분을 추가로 넣어 능력치를 조작하거나, 특정 과정없이 바로 승/패를 선언할 수 있도록 만들 수도 있다. 클라이언트를 구동할 때 외부 프로그램을 같이 동작시키는 방식을 많이 사용하며, 이 프로그램과 연계해 다른 해킹 방식을 추가적으로 사용할 수 있게 만들 수도 있다.




- 메모리 후킹(에디트)


⊙ 대표적인 핵 : 게임 내의 각종 수치(체력, 공격력, 방어력 등)변환.
⊙ 변조방식 : 게임 클라이언트를 실행할 때 유저의 컴퓨터가 계산하는 값을 조작해 변조.   
⊙ 유저이익 : 빠른 레벨 업, 절대 죽지 않는 캐릭터 생성 가능.
⊙ 여파 : 이 값을 조작하는 방식이 클라이언트마다 동일하기 때문에 툴로 변경해 유저들에게 공급함.


게임 프로그램이 구동될 때 이를 인식하기 위해 가상의 공간에 프로그램을 저장해 두는데, 이 과정에서 컴퓨터와 게임이 정보를 주고 받는다. 유저의 캐릭터가 특정 동작을 수행하면 컴퓨터는 이를 메모리에 등록하고 핵 프로그램 제작자는 이 정보를 조작해 값을 변경하는 것이다. 예를 들어 유저의 캐릭터가 물약을 마셔서 체력을 10 회복했다면, 컴퓨터는 체력을 올리기 위해 메모리를 사용해 체력을 10 올려주기 위한 계산을 한다. 핵 프로그램 제작자는 이를 찾아 10이라는 숫자를 10만으로 수정할 수 있다.



- 패킷 조작


⊙ 대표적인 핵 : 공격 명령을 포함하는 패킷(데이터)을 순식간에 여러 번 보내 상대방이 여러 번 공격 당하는 것처럼 결과를 산출하도록 만드는 핵(한방핵).
⊙ 변조방식 : 유저의 클라이언트가 온라인 게임 서버에 보내는 값을 조작해 변화되는 값을 서버에 전달.
⊙ 유저이익 : 한 번의 조작으로 반복적인 행동 가능.
⊙ 여파 : 빠른 레벨 업, 막대한 공격력 부과 가능.


게임 프로그램이 서버와 데이터를 주고 받을때 패킷(데이터를 주고받는 단위)을 전송하는데, 핵 프로그램 제작자는 이를 조작한다. 주로 P2P게임에서 이러한 현상이 발생하며 승리 경험치, 상대방을 죽인 횟수는 물론 원천적으로 공격하라라는 명령이나 공격을 받고 난 뒤 데미지 값 조차도 조작가능하다. 통상적으로 같은 명령을 여러번 내리거나, 보내야할 명령의 값을 축소하는 등의 역할을 한다.



- 파일 변조(역 어셈블리, 리버스 엔지니어링, 리버싱)


⊙ 역할 : 게임 내 가능한 모든 행동을 조작 가능.
⊙ 변조방식 : 게임 클라이언트, 데이터 파일(맵, 스크립트)등을 분석해 조작 클라이언트의 보안 코드 자체를 무시하는 방법을 통해 조작.    
⊙ 이익 : 유저가 조작 가능한 모든 것을 수정할 수 있음.
              방어하기 까다로워 수정에도 시간이 걸림.

핵 프로그램 제작자가 프로그램을 이용해 원본 소스를 분석해 취약점을 발견하면, 이를 변경해 해킹할 수 있게 된다. 이 방법 또한 클라이언트 프로그램을 어떻게 제작했느냐에 따라 무한한 가능성이 존재한다. 또한, 프로그램을 제작하면서 처리속도의 문제나 서버의 문제, 비밀번호 확인문제등 수 많은 위험이 포함된 내용을 만들 수 밖에 없다. 따라서 클라이언트 제작자들은 보안을 위해 여러가지 위장 코드를 사용하거나 긴 소스 속에 취약점을 숨겨두는 등 갖가지 방법을 통해 해킹을 피하려 하고, 핵 프로그램 제작자들은 이를 찾아내 핵으로 만들고자 노력한다.

저작권자 © 경향게임스 무단전재 및 재배포 금지

개의 댓글

0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400

내 댓글 모음