안티 치트
1. 개요
Anti Cheat
주로 PC 기반의 온라인 게임에서, 악성 사용자(주로 핵)가 게임을 분석하거나 해킹하는 것을 막는 것이 존재의 목적인 소프트웨어. DRM과 헷갈리면 안 된다. 쉽게 얘기하자면 DRM은 복돌을 막는 것이고, 안티 치트는 핵을 적발하는 것이다. 모바일 버전도 존재하기는 하지만 모바일 기기는 일반적으로 안드로이드나 ios나 일반 앱은 모두 샌드박스되어 있어 아래 역할 중 매우 제한적인 기능만을 할 수 있다.[1]
어느 온라인 게임에든 해당되는 얘기지만 핵으로 부터 완전히 자유로울 순 없다. 기술적인 부분에서 핵유저를 막으려고 해도 분명히 한계가 존재한다. 그렇기 때문에 대부분의 게임 회사들은 핵유저를 찾아내 제재하는 안티 치트 프로그램을 같이 사용하고 있다. 따라서 안티 치트는 기술적으로 아예 핵을 사용하지 못하게 막는 것이라기 보다는 '핵 사용자를 적발하는 것'이라고 보는게 더 맞다. 몇몇 게임회사들은 치트 방지를 위한 안티 치트 소프트웨어를 독자적으로 개발하여 운영하고 있다.
개인정보를 수집하기도 하는데 금융권의 엑티브 x나 방화벽 프로그램과 같이 실질적으로 사용자 동의 없이 컴퓨터 사용기록을 수집할수 있다. 동의를 받기는 하지만 이는 법적인 기준만 충족시키기 위함이고 이것을 설치하지 않거나 동의하지 않으면 서비스 이용 자체가 불가능하기 때문.[2] 일부 안티치트에서 백도어 논란이 발생하기도 했다.
2. 원리
안티 치트는 대개 다음과 같은 원리로 작동한다.
- 클라이언트가 보내는 정보를 감시
게임서버에서 클라이언트가 보내는 정보를 감시하여 핵을 사용하는지 적발하는 것 이다. 원래 규칙에는 없는 동작, 이를테면 게임 캐릭터가 하늘에 날라다닌다거나 [3] 정상적으로는 불가능한 위치정보 변동을 서버에서 감시하는 것 이다. 에임핵의 경우, 플레이어의 에임을 감시하는 방식으로만은 에임핵을 적발하진 않는데, 일반인이 보기에는 핵이라고 생각될 수 있는데 정말 에임이 말도 안될정도로 뛰어난 사람도 존재하기 때문이다. 그래서 보통 게임 회사들은 기술적인 부분에서 다양한 검토를 걸쳐서 핵을 적발하고 밴을 한다. 이 안티치트는 서버사이드에서 작동하기 때문에 서버와 연결이 불안정하여 갑작스럽게 위치가 변하는 경우를 핵으로 판단할 소지가 있다.
- 게임 클라이언트 무결성 검사
플레이어가 실행중인 게임 클라이언트에 원래 클라이언트에는 존재하지 않는 부적절한 코드가 포함되어 있는지 패키지 검사를 하는 방식으로도 핵 적발이 이루어진다. 하지만 이런 방식은 클라이언트 프로그램 자체를 조작한 핵에만 해당하며, 클라이언트 자체는 조작하지 않았으나 그 게임 클라이언트에 간섭하는 프로세스를 수행하는 별도의 프로그램의 경우까진 적발할 수 없다. 따라서 이 경우엔 아래와 같은 방식이 사용된다.
- 실행중인 프로세스와 컴퓨터 사용기록 분석
컴퓨터 시스템의 정보, 실행중인 모든 앱과 백그라운드, windows 프로세스를 감시하여 그 중에서 게임 클라이언트에 부적절한 접근, 간섭을 하는 코드를 실행하는 프로그램을 적발하는 것 이다. 가장 강력하고 효과적인 방식이나, 몇가지 딜레마가 존재한다. 일단 프로세스 전부를 실시간으로 모니터링 하다보니 CPU 점유율이 있어서 사양이 낮은 컴퓨터에는 원활한 게임 진행에 방해가 될 수 있으며 너무 지나치게 사용자의 컴퓨터 정보에 접근하는 안티 치트는 개인정보 침해 논란으로도 번질 수 있기 때문이다. 이러한 논란은 EasyAntiCheat 문서에서도 자세히 설명되어있다. 예를들어 VAC의 경우는 사용자의 DNS 캐시, 즉 인터넷 접속 기록을 밸브 서버에 보낸다는 사실이 밝혀진 뒤 개인정보 침해 논란이 있었는데, 단순히 핵 사이트에 들어간 기록이 있을지만 매칭할 뿐 이고 그 외 사용자가 어떤 페이지에 들어갔는지는 보지 않는다고 해명했다.
- 가상머신 감지
3. 안티 치트 목록
- 가드캣
- 게임가드
- 배틀아이
- 워든
- 펑크버스터
- 핵실드
- CodeStage
- Denuvo
- Fairfight
- VAC
- XIGNCODE
- X-TRAP
- Xenuine
- EasyAntiCheat
- CheatBlocker
- NGS
- VANGUARD
[1] 모바일 버전의 기능들은 루팅 여부 확인, 커스텀 롬 감지나 악성앱 차단(핵도 포함한다) 등이다. 안드로이드 자체 보안 기능인 SafetyNet를 주로 사용하는 편이다. SafetyNet는 제조사 순정 펌웨어를 사용했는지 검사하는 기능이다.[2] 원리도 은행 방화벽과 유사하다.[3] 물론 대부분의 온라인 게임들은 안티 치트에만 의존하는게 아니라 게임내에서 자체적으로 그러한 조작된 클라이언트의 부적절한 신호 자체를 차단하는등 기술적인 부분에서 핵을 막으려하고 있기 때문에 보통 캐릭터가 날라다닌다거나 하는 수준의 핵 구현은 불가능한 편이다. 이러한 종류의 핵 차단 방식은 게임 서버에 있어야 할 기본적인 기능이다.