게임핵
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
파일 내용을 가지고 해시값을 만든다
만들어진 해시값을 비교해서 판단
코드 암호화
코드를 암호화한 다음에 실행시에만 암호화를 푸는 방식
게임의 실행시간이 길어진다
최대한 여러겹의 방지 대책들을 사용한다