게임 서버

게임핵

초혼 2023. 5. 27. 01:15

https://www.youtube.com/watch?v=11Ilw4NcZM8&list=PLy-g2fnSzUTDsS7kCzmFYn4BJK6nCs0_r&index=8 

 

게임핵

Deterministic 방식은 상대가 주는 Input Set에 의존하는 방식이기 때문에 해킹에 취약하다

 

Deterministic 방식은 딜레이가 없을 수가 없다

딜레이 때문에 FPS의 헤드샷 같은 정밀한 판정이 필요한 플레이를 구현하기 어렵다

정밀한 플레이는 클라이언트에서 판단하게 하는 경우가 있다

이를 이용해서 핵을 만들 수 있다 

Ex) 에임핵

 

딜레이를 보정하기 위해서 심판은 동작에 대해 오차범위를 둔다(Tolerance)

오차범위를 넘어서는 행동을 해킹이라고 판단한다

오차범위 안에서 이득을 보는 핵은 잡히지 않을 수 있다

 

 

 

검증

변조된 Input Set을 잡기 위해 Input Set에 대한 검증이 필요하다

검증은 중간에 심판이 하거나 서로 하는 방식이 있다

 

심판의 경우 중계 서버가 그 역할을 할 수 있다

중계 서버가 검증하려면 중계서버가 게임의 상태와 룰(게임 코드)을 알고 있어야 한다

-> Stateless한 중계 서버는 검증할 수가 없다

 

 

 

방지

외부 해킹은 외부 프로그램을 통한 해킹 방식

게임 실행 중일 때 특정 외부 프로그램을 못쓰게하는 블랙 아웃 방식

Ex) nProtect

 

내부 해킹은 클라이언트 코드를 변조하는 해킹 방식

해커가 클라이언트 파일을 가지고 있기 때문에 내부 해킹은 방지하기 까다롭다

 

파일 사이즈 비교

 

CheckSum

파일 내용을 가지고 해시값을 만든다

만들어진 해시값을 비교해서 판단

 

코드 암호화

코드를 암호화한 다음에 실행시에만 암호화를 푸는 방식

게임의 실행시간이 길어진다

 

최대한 여러겹의 방지 대책들을 사용한다