본문 바로가기

My Study/Reversing

바람의나라 가상머신 탐지 우회

대부분 온라인게임은 VMware, Virtual PC, Virtual Box 등 이러한 가상머신에서 실행을 막아놨다.

왜냐하면 하나의 컴퓨터에서 2개의 ID를 돌릴 수 있기 때문이다. 건전한 게임을 위해선 가상머신에서의 실행도 막아야한다.

하지만.. 난 바람의나라를 하지 않지만 프로젝트 때문에 가상머신에서 게임 실행시켜 테스팅 해봐야한다. 그로인해 한번 가상머신 탐지 우회를 한번 해보았다.


여기선 다음과 같은 질문 & 요청은 받지 않는다.

1. 자동화 툴좀 주세요.

2. 어떠한 방법을 사용했나요?


여기 글에서도 방법론은 제시하지 않을 것이다.


일반유저들이 가장 쉽게 멀티로더를 우회할 수 있는 방법이 바로 가상머신에서 OS를 새로 깔고 게임을 돌리는 것이다. 하지만 가상머신에서 실행을 막아놨으니 될리가 없다. 인터넷을 찾아보면 VMware의 경우 vmx 파일에 어떤 코드 4줄만 추가하면 가상머신 탐지 우회가 되면서 실행된다고 나와있다. 하지만 여기선 이러한 불안정한 방법이 아닌 실제 파일을 대상으로 분석을 해볼 것이다.


해당 게임은 더미다로 패킹이 되어 있다.

더미다.. 사실 개인적으로 패킹을 싫어한다. 하긴.. 패킹을 좋아하는 리버서가 있을런지..


온라인 게임인 만큼 더미다 높은 버전을 사용하고 있을 것이다. 또한 안랩에서 만든 핵쉴드 또한 더미다로 패킹되어 있다.

추가적으로 중요 루틴에는 Code Virtualizer를 사용했는지 모듈전체가 가상화 되어 있다.


역시 넥슨다운 위엄을 보여준다. 자칫하면 포기할뻔했지만 정신줄을 겨우 잡고 분석시간만 열 몇시간이 걸렸다.

느낀점이 있다면.. 리버싱 실력이 너무 안좋다는 것을 느꼈다. 경험도 부족하고 보는 눈이 좁은 것 같다.


분석결과 가상화가 되어 있는 부분은 분석할 엄두조차 못냈다는 것이고 정말 더욱 보안을 강력하게 하고 싶으면 모듈 몇 개만 더 가상화를 똭 해주면 난 포기했을 것이다.


내 생각으론 아래 2가지만 더 고려하면 더욱 보안을 강력히 할 수 있을 것이다.

1. 바람의나라게임 - 특정 모듈 몇개만 더 가상화

2. 핵쉴드 - 자기만 보호하지말고 대상 게임도 보호대상으로 고려

                원래 게임을 대상으로 보호 하는 모듈이지만 분석가 입장에선 그렇게 게임을 보호하고 있다는 느낌을 못받았다.


몇 가지 더 있지만 분석하는데 힌트가 될 수 있으므로 더 이상 적진 않겠다.


어짜피 난 프로젝트를 위해 잠깐 테스팅만 하면 되므로 목적달성은 했다.

넥슨 측에선 이후 더욱 보안을 강력하게 했으면 좋겠다.


아래는 자동화툴을 만들어서 테스트해본 결과이다. 넥슨 게임은 홈페이지에서 특정 커맨드를 내려받아 게임을 실행시켜야하므로 파일로 존재하는 exe만 그냥 실행시켜선 게임을 실행할 수 없다. 그렇기 때문에 자동화툴을 만들지 않으면 게임 실행 후 메모리 패치 방법이 없다. 아.. 아에 없진 않다. Process Hacker같은 툴로 해당 프로세스를 suspend 시켜놓고 메모리 패치 후 다시 resume을 해주는 방법도 있긴있다.