본문 바로가기

보안

닷지1.9 닷지무적버그 원리



곰플레이어의 이스터에그 닷지라는 게임 많이 들어보셨을 테고, 해보셨을 겁니다. ^^ 곰플의 이스터에그인 닷지는 무수히 많은 미사일을 피하는 비행 게임으로써 시간을 기록하여 등록할수도 있고, 닷지 플레이영상을 저장할 수도 있습니다. 하지만 요즘에는 닷지를 실력으로 하는 사람보다 닷지무적버그라 불리는 패치를 사용하거나 파라미터를 이용해 어뷰징 하는 사람들이 훨씬 많은 것 같습니다. ^^; 오늘은 간단히 닷지1.9 버젼의 닷비무적버그라 불리는 패치의 원리와 파라미터의 원리에 대해서 소개해드릴까 합니다. ^^

곰플레이어 이스터에그 닷지



곰플레이어 실행시 F1키를 누르면 위와 같이 프로그램 정보가 나옵니다.
이때 가운데 있는 곰플레이어 아이콘모양을 클릭하시면 이스터에그 닷지가 실행됩니다.



곰플의 이스터에그 닷지는 미사일을 피하는 비행게임 입니다.
닷지는 처음에는 총알 50개가 나오게 되며, 시간이 흐를수록 미사일 갯수가 늘어납니다.




닷지는 게임오버시 위와 같이 서버에 등록여부를 물어보고, 닷지 기록 등록시 이름과 소속을 적어 등록하게됩니다.



위의 그림은 닷지 서버에 등록된 내용입니다. 이름과 소속, 플레이시간과 등록시간이 닷지서버에 등록되어집니다.
닷지 플레이시간을 자세히 보시면 아시겠지만 닷지 플레이 시간이 214초, 19752초를 기록한 유저들이 보입니다.
사실상 불가능한 닷지 기록입니다. 이런 사람들은 백이면 백 전부 닷지무적버그라 불리는 프로그램을 사용했거나
파라미터를 이용한 유저들입니다.

닷지1.9 닷지무적버그 원리


위와같은 닷지1.9 닷지무적버그라 불리며 웹상에 돌아다니는 파일이 여럿 있습니다.
버그라는 말은 소프트웨어 및 하드웨어의 오류 및 오작동을 의미하기 때문에 위와같은 프로그램은
닷지무적버그가 아닌 닷지무적패치라 불러야 맞습니다.


닷지를 디버거 프로그램으로 열어봤는데.. please do not abuse!!!!!~~ 라는 단어를 발견했습니다;;
어지간히 당한것 같네요 ^^;



닷지는 peid 확인시 요다1.2로 확인되지만 사실은 RLPack에 fake signature이 추가된것 뿐입니다.
닷지는 그저 간단한 스택 기반의 패커입니다. ^^;

닷지무적버그의 원리는 닷지 언팩이후 디버거를 통해 어셈문을 확인하여 분기점을 찾아내어
거기서 부터 분석해 내려가는 방식으로 제작됩니다.

예를들어 티서치 및 엔진류의 프로그램을 활용하여 닷지 총알의 갯수를 나타내는 주소를 찾아낸뒤
디버거를 통해 해당 해당 주소의 위, 아래 50줄 내외를 확인하여 총알의 생성루틴 등을 확인하고
그부분을 제거하거나 그 곳을 분기점으로 삼아 죽는 루틴, 기록출력루틴, 별 생성루틴 등..
확인하여 찾아내는 방식입니다. 그리고 확인해본 결과 요즘 돌고 있는 닷지무적버그란 이름의 프로그램들은
대부분 바이러스가 있었으니 주의하시길 바랍니다. ^^;

파라미터를 이용한 방법



자신의 닷지기록을 서버에 기록하게 되면 닷지는 서버로 특정값을 보내게 됩니다.
당연히 이름 및 소속, 플레이시간 등을 보내게 되겠지요
패킷스니퍼를 이용하여 닷지와 서버가 주고받는 값을 자세히 보시면 이름/등록시간/키/버젼 등의 조합이란걸
알게됩니다. 뒤에 붙는 md5 해시도 이와 관련이 있습니다. 결론적으로 닷지를 플레이하지 않고 임의적 파라미터
생성 후 주소창에 붙여넣기만 해도 서버에 기록되게 됩니다.



닷지 안티 디버깅 루틴에서 깜작 놀랐네요 ^^; 조작여부 감시하는 부분도 있고
닷지는 미니게임이라 생각되지 않을만큼 보안에 신경을 썼다고 느껴집니다. 아쉬운 점은 서버와
주고받는 패킷을 단순치환 형식의 암호화라도 한다면 지금보다 훨씬 나아지지 않을까 생각해봅니다.