'리버싱'에 해당되는 글 1건

게임핵 방어기법

리버싱 2015. 11. 28. 21:16

웹해킹과 시스템해킹에 대해 지루함을 느낄때 공부를 시작 한것이 리버스엔지니링이다.

예전에는 소프트아이스나 PC-tools, 게임위저드 같은 툴이 다였는데

어느순간 부터 ollydbg나 ida-pro가 등장하기 시작했다. 2005년 부터 한 4개월 정도 게임핵 을 접하기 시작 했다. 당시 유행하던 p2p나 총쏘는 게임이 주로 타겟이였다.

irc에서도 많이 유행하기 시작했고, 홈페이지도 붐비였다. 그리고 듀*님 블로그가 엄청난 조회수를 기록하기도 하였다.

게임핵은 어떻게 만드냐? 종류가 크게 3가지 정도로 본다. 계정탈취, 오토봇, 게임조작

아래에서는 계정탈취나 오토봇은 다루지 않겠다.

그럼 게임조작을 어떻게 하느냐? 

메모리조작과 EXE실행파일(엔진) 조작이 가능한 부분이다.

주로 총쏘는 게임을 많이 조작했는데 총쏘는 게임의 구조는 가장 좋은 PC를 서버로 두고

모든 유저가 그 서버에 접속을 하여 소켓통신으로 게임이 진행된후 게임결과를 다시 서버로 전송하는 방식이다.  웹하드의 스트리밍 서비스와 비슷하게 서버에 최대한 부하를 줄이고 유저들에게는 빠른 타격감을 느끼도록 제작된것이다.

다만 저런 구조다 보니 해킹에 취약할수 밖에 없는 구조다. 초창기에는 메모리해킹이나 엔진파일이 바로 변조가 되었는데 메모리해킹은 어느정도 막히고, 엔진파일에 대한 조작만 활발하게 되었다. 그래서 해당 엔진파일이 조작되면 용량도 바뀌고, 주소값에 대한 시그니처도 바뀌고 무결성이 침해된다.

그래서 엔진파일의 무결성을 위해  보장하기 위해 여러가지 보호기법이 등장하기 시작한다.

그게 바로 런처다. 런처는 흔히 쉽게 설명하여 canary와 비슷하다 bof에서도 RET가 변조되면 해당 프로그램이 종료 되듯이 해당 엔진파일이 변조되면 프로그램이 종료되거나 다시 엔진파일이 다운로드 되어 실행되게 되어있다.

이 런처를 뚫기 시작한것이다. 처음엔 단순한 패킹으로 우리들의 아마추어적인 실력으로 뚫리다. 이게 점점 어려워지기 시작하고, 2중 3중 방어막이 생기게 되었으나 이것 마져 뚫으니 전문적인 업체에 런처를 외주를 주기 시작 하였다. 그 전문적인 업체는 우리보다 뛰어난 기술을 보유하고 있었고, 더욱 더 몇몇 유저들이 몇만원에 파는 게임핵을 구매하여 패치하는 치밀함까지 보였다.

그래서 어디서 시작되었는지 모르겠는데 중국애들이 런처를 뚫기 시작했다. 물량 대 물량싸움이 되었다. 그리고 그렇게 뚫린 런처는 비싼 가격에 몇몇 유저만 사용되기 시작했다.

초창기에는 무반동, 연막무시, 무한수류탄, 무한총알, 무한체력 등이 있었지만 나중에 중국애들이 뚫었던 런처에서는 유료 풀템을 차면 이동속도가 10%정도 증가되는 아주 미묘한 성능 향상만 있었다. 만약 상대방이 왜 이렇게 빠르냐고 물어보았을때 풀템이라고 우기면 되는식;;

하지만 아직도 큰 구조는 벋어나지 못하는거 같고, 엔진파일을 조작한 핵은 존재할거라 믿는다. 다만 걸리지 않게 사용중인거 같다.

엔진파일을 조작하는 게임핵은 어떻게 막을것 인가? 요즘은 리플레이 기능이 있다. 그리고 소켓통신 중에 실시간으로 결과를 남기기는 힘드나 한판이 끝나면 그 게임 내역에 대해 전송받아서 분석하는건 가능하다. 후행적으로 FDS를 적용한다고 생각하면 쉬울것이다.

게임핵을 만드는곳과 방어하는곳은 해킹분야나 악성코드 분야와 비슷하듯이 뚫고 뚫리는 관계이다.

게임핵의 방어기술이 날로 발전하길 바라며 몇자 주절거러 본다.

허가 받지 않는 리버스엔지니어링은 절대 하지 말길 바라며 4개월 뒤 외국을 1년정도 다녀왔는데 같이 공부하던 친구들은 다 경찰서에 한번식 다녀 왔었다.

연락이 그뒤로 한명도 안되는데 다들 잘먹고 사는지 모르겠다.

블로그 이미지

iesay

,