17.Speed Hack 탐지 기능

ProudNet은 내부적으로 Speed Hack 탐지하는 기능이 있습니다. 이 기능을 통해 Speed Hack을 쓰는 게임 클라이언트를 탐지할 수 있습니다.

그림 17-1스피드핵 프로그램

Speed Hack이 탐지되면 해당 클라이언트에 대한 서버 이벤트 Proud.INetServerEvent.OnClientHackSuspected 가 콜백됩니다. 개발자는 이를 통해 불량 사용자 명단을 수집하거나 추방(Proud.CNetServer.CloseConnection)할 수 있습니다.

17.1Speed hack 탐지 기능의 주의 사항

ProudNet의 Speed Hack 탐지 기능은 다음과 같은 문제점이 존재합니다. 따라서 스피드핵 감지기의 결과를 무조건 신뢰해서는 안됩니다.

•20% 미만의 속도로 컴퓨터 속도 해킹을 하는 경우 탐지가 안됩니다.

•통신 상태가 불량한 클라이언트는 Speed Hack을 쓰는 것으로 오인될 가능성이 있습니다.

스피드핵은 클라이언트가 서버로 초당 1~2회의 UDP 패킷을 보냅니다. 따라서, 스피드핵 감지기를 끄면 서버의 처리 성능이 소폭 향상됩니다. 스피드핵 감지기를 켜거나 끄는 것은 Proud.CNetServer.EnableSpeedHackDetector로 할 수 있습니다.

17.2Speed Hack 탐지 기법

ProudNet의 스피드핵 탐지 방식은, 클라이언트-서버간 주고받는 ping 메시지의 주기를 체크하는 방식입니다.

ProudNet에서는 수초 인터벌로 ping을 클라이언트에서 서버로 보냅니다. 서버에서는 ping 메시지가 도착하는 주기가 지나치게(통상 보내는 인터벌의 30% 이상 오차) 차이가 나면서, 그런 차이가 나는 ping이 20회 정도 이상 도착하게 되면 스피드핵을 쓰는 것으로 간주합니다.

한편, 스피드핵을 의도적으로 쓰는 게이머는 지속적으로 스피드핵을 쓰지 않고, 잠깐 잠깐씩 스피드핵을 쓸 수도 있습니다. 이를 감지하기 위해서 서버에서는 클라이언트가 처음 서버에 접속한 이후 주고 받는 클라이언트 내부 시간 값과 서버에서의 시간 값을 비교합니다. 만약 클라이언트에서 처음 접속한 시간 이래 클라이언트가 서버에게 지속적으로 보내는 클라이언트 내부 시간 값과 서버에서 측정된 시간 값의 차이가 지나치게 크면 역시 스피드핵을 쓴다고 간주합니다. 단, 이 체크 방식은 클라이언트가 서버에 접속한 후 수십초가 지난 후부터 시행합니다.

스피드핵의 탐지 신속성과 정확성은 상충합니다. 이를 조절하려면 Proud.CNetServer.SetSpeedHackDetectorReckRatioPercent를 사용할 수 있습니다.