먼저, 게임 구동을 이해해보자.
온라인 게임은 이런식으로 진행된다. (전투, 이동 등)
게임 핵은 서버를 건드릴 수는 없고, client를 변조하여 이루어 진다. 그리고, 게임은 하나의 애플리케이션이다.
-> 게임 사 측에서 물증을 확보할 수 없기 때문에 잡을 수 없다...
-> 불법적으로 해당 컴퓨터의 레지스트리를 확인하지 않는 이상 불가능 할 것이다.
-> 몇몇 불법 프로그램 자체를 막는 등의 임시 조치 정도 가능하다..
-> 자신의 데이터를 변조하여 서버로 전송하는 방법이다.
-> 기술적으로는 게임사에서 추적할 수 있다.
-> 서버에 보안 로직을 추가하는 것으로 방어할 수 있다. (1초 동안 유저가 이동할 수 있는 거리를 파악하는 등..) 그러나, 이 로직이 들어가는 순간 연산이 너무 많아져서 서버에 부하가 걸린다.
-> 혹은 로그 데이터 정보를 바탕으로 추적이 가능하다.(이것도 데이터가 너무 방대해져서...ㅠ)
-> 외부 프로그램을 사용하여 단순 반복 작업을 시키는 것이다.
-> 예를 들어, 방향키 누름을 통한 움직임, 스킬 실행, 포션 먹는 것 등의 키가 눌리게 반복 설정.
-> 그러면 운영체제 단에서 외부 프로그램을 막아야 하는데, 이게 게임 단에서는 불가능하다.
-> 클라이언트 데이터를 참조해서 외부 프로그램을 사용하여 클라이언트 내에서 자체적으로 변조하는 것이기 때문에 서버에 흔적이 남지 않는다.
-> 예를 들어, 마인크래프트의 광물 중 다이아 몬드 외에 광물(지형이나 광물 등)은 투명하게 보이도록 그래픽 텍스쳐 파일을 깨트리면 투명하게 보이게 된다.
-> 이런 것에 대한 보안 정책으로 검증 절차 등을 넣기도 하는데, 근본적인 해결 방법은 아니다.