일반적인 온라인 게임의 다이어그램은 게임 사용자가 웹으로 로그인을 하고, 웹에서 액티브엑스인 게임런쳐가 실행되 사용자 정보를 읽어들인 후, 그 정보를 게임클라이언트에 넘겨주는 것이 일반적입니다.
여기서 주로 게임런쳐가 하는 일은 아래와 같습니다.
1.사용자 PC를 체크한다 (게임이 실행될지 안될지)
2.게임이 설치되어 있지 않다면, 다운로드 받는다
3.설치되어 있다면 체크섬을 계산하여 업데이트를 다운로드 받고 이를 해당화일에 덥어 씌운다.
4.웹서버로부터 사용자 정보를 게임클라이언트에 넘겨준다. (이과정에 암호화를 사용하기도 함)
5.게임클라이언트는 위에서 넘겨받은 정보를 가지고 로긴한다.
보통 게임 리버스 엔지니어링시에 hex editor로 게임 클라이언트나 데이터에 수정을 가했을 경우는 게임런쳐가 그 화일들에 대한 체크섬을 계산해서 업데이트하기 때문에 애써 수정해 놓은 클라이언트 화일들이 원래 화일로 돌아오는 경우가 있는데요. 이를 우회하기 위해 게임런쳐 자체를 패치해 버리는 방법을 사용할 수 있습니다.혹은, 체크섬 엔트리들을 가지고 있는 화일을 조작해서 체크섬을 바꾸는 방법도 생각해 볼 수 있겠내요.
도식도는 아래와 같습니다.
현재 이런 취약점을 가진 게임들이 상당수 있습니다. 따라서 게임 클라이언트 스스로 방어를 할 수 있게 해줘야 합니다. 게임 클라이언트 화일 자체를 패킹을 한다던지, 컨설팅을 받아 변조가 어려운 새로운 화일 시스템을 만든다던지 하는 일이 필요한데요. 그런일들은 일반 개발자들이 하기는 힘들고, 전문적인 지식을 가진 보안인력들의 노력이 필요하게 됩니다.
'게임 시큐리티' 카테고리의 다른 글
| Windows 의 부팅과정 (0) | 2009/10/13 |
|---|---|
| MonnLighte Engine vs GameGuard 기싸움 (0) | 2009/10/11 |
| 자바 게임 해킹 (Java game hacking) (0) | 2009/10/09 |
| 게임런처 보안에 관해... (0) | 2009/10/09 |
| 게임사용자 PC조사시 잘 사용하는 도구들... (0) | 2009/10/09 |
| 게임 ID/PASS 에 관한 사회공학 (0) | 2009/10/09 |