온라인 멀티 플레이어 게임에서 부정 행위를 방지하거나 줄이려면 몇 가지 방법이 있습니까? [닫은]


19

펑크 버스터는 부정 행위를 방지하기 위해 존재하지만 펑크 버스터 지원 게임에서는 일반적으로 부정 행위가 발생합니다. Modern Warefare 2는 자신의 서버를 실행하거나 개조하는 최종 사용자로부터 심각하게 잠겨 있으며 부정 행위는 지속적으로 발생합니다.

각 클라이언트가 PC에서 실행되는 멀티 플레이어 게임의 경우 부정 행위를 줄이거 나 없애기 위해 무엇을 할 수 있습니까?



1
이것은 그 자체로는 완전한 대답이 아니므로 하나의 목록으로 표시하지는 않지만 전통적인 안티 치트 방법 외에도 플레이어 계정에 일정량의 가치를 추가하면 도움이 될 수 있다고 생각합니다. 예를 들어, 새로운 플레이어가 게임의 나머지 부분에 액세스 할 수있는 충분한 경험을 얻을 때까지 "noob"서버로 강등 될 경우 해커는 매번 금지 된 후 계정의 레벨을 재조정하기가 매우 어려워집니다. 아마도 해커가 여전히 남아있을 수 있지만 고객을 보호하는 것보다 계정 / 매치 메이킹 서버를 보호하는 것이 훨씬 쉽습니다.
Lewis Wakeford

답변:


18

치트를 만드는 주요 방법 중 하나, 응용 프로그램에 래칭 및 수정하는 다른 프로세스 중 하나에 초점을 맞추는 방식에 따라 달라집니다. 다른 모든 프로세스를 열거하고 메모리 조작 방법과 키보드 / 마우스 에뮬레이션을 연결할 수 있습니다. 행동 양식.

Wallhacks는 일반적으로 프로세스와 DirectX / GL 라이브러리 사이에 코드를 삽입하여 재질의 투명성을 설정하여 볼 수 있도록합니다. 장면 그래프 / 컬링 시스템에 코드를 추가하여 다른 플레이어 / 유용한 엔티티가 벽 뒤에있는 경우 (그런 부정 행위를 방지하기 위해) 구체적으로 그리지 않도록 할 수 있습니다.

멀티 플레이어를 사용하고 클라이언트 / 서버간에 패킷이 수정되는 것을 방지하려면 자신 만의 알고리즘을 통해 전송하는 데이터의 체크섬을 생성하고 다른 쪽에서이 데이터를 확인하는 것이 효과적 일 수 있습니다. (어쨌든 다양한 품질 관리 목적으로이 작업을 수행하게 될 것입니다).

대부분의 인 메모리 리소스도 마찬가지입니다. 프레임 시작 부분에 체크섬을 만들고 다양한 단계에서이를 확인하면 매우 편리한 메모리 조작 감지가 가능합니다.

이것은 매우 관련된 주제이지만, 이것이 모호하게 허용되는 방향으로 설정되기를 바랍니다.


또는 플레이어가 플레이어의 위치에 대한 정보를 전혀 제공하지 않고 (또는 해킹 될 수있는) 벽 뒤에 물체를 숨기는 것보다 더 나은 방법이 있습니다 (또는 좋은 3D 사운드 효과와 같은
것만 필요함

17

가장 극단적 인 해결책에서는 기본적으로 클라이언트를 신뢰하지 않습니다. MMO와 같은 게임의 경우 사용자는 서버를 실행하지 않으며 모든 게임 플레이 논리는 서버 측에서 처리됩니다. 고객에게 "X 건강이 있습니다"또는 "X 탄약이 있습니다"등을 말할 권한을 부여하지 마십시오.


4
실제로 전용 서버를 실행할 수있는 리소스가 있다면 훌륭하지만 서버를 보는 매우 간단한 방법입니다. 대부분의 경우 여전히 기본 규칙을 적용하기 위해 때때로 동기화하여 클라이언트에서 많은 로직을 수행하고 서버에서 로직의 최소 서브 세트를 수행합니다. 또한 클라이언트가 유용한 정보 등을 드러내도록 속이는 wallhacks / memory 조작과 같은 모든 클라이언트 측 치트를 막을 수는 없습니다.
Rob Ashton

10

로직이 비싸고 서버주기를 절약하기 위해 주로 클라이언트에서 수행해야하는 시스템이있는 경우 확률 적 치트 탐지 시스템을 구현할 수 있습니다. 몇 분마다 서버에서 면밀하고 일관성을 검사하기 위해 몇 명의 다른 플레이어를 선택합니다. 사기꾼은 거의 시간의 짧은 희귀 기간에 자신의 부정 행위를 제한하지 않기 때문에, 그들은 것입니다 결국 잡힐.

이것에 대한 또 다른 이점은 개발을위한 빠른 처리주기가 없다는 것입니다. 서버가 사용자에게주의를 기울이는 데 평균 10 시간의 게임 플레이가 필요한 경우,보고 싶을 때마다 10 시간의 처리주기입니다. 뭔가 일했다면. 이 경우 작업을, 서버가 그들에게 주어진 경우 그들이 알고하지 않기 때문에 더 오래입니다 엄지 손가락하거나 그들에게 주위 못했다.


+1 성능 측면에서 이와 같은 확률 론적 접근 방식은 더 광범위한 문제인 IMO에 대한 유일한 현실적인 답변입니다. OnLive를 제외하고, 즉 미국 만 타겟팅하는 경우입니다.
엔지니어

5

그래픽 라이브러리 호출에 연결하여 작동하는 일인칭 슈팅 게임을위한 많은 조준 지원 해킹도 있습니다. Counter-Strike / HL1 용 OGC Hook에는 벽을 투명하게 만드는 것 외에도 다양한 옵션이 있습니다.

적의 위치 정보가 어느 시점에서 광범위하게 사용 가능한 코드가있는 하위 레벨 라이브러리로 전달되면 해당 호출을 연결하고 위치, 스케일, 회전 등 데이터를 사용하여 발사에 가장 적합한 벡터를 정확하게 계산할 수 있습니다 그 적에게. PunkBuster와 같은 치트 방지 시스템에는 메모리 및 프로세스 모니터링 외에도 휴리스틱 유형 감지 (이 플레이어가 완벽한 샷을 얻는 빈도, 원샷 킬 등을 위해 180도 정도의 회전을하는 빈도 등)가 포함됩니다.

궁극적으로 멀티 플레이어 게임에서 부정 행위를 방지하는 작업은 고양이와 마우스 게임입니다. 새로운 치트가 개발됨에 따라 새로운 치트 방지 방법이 만들어진 다음 새로운 치트 방지 기술을 사용하여 새로운 치트 방지 기술을 만들었습니다.

Tetrad가 그의 답변에서 말했듯이, "게임 보안"에 대한 단단하고 빠른 규칙은 클라이언트에게 가능한 적은 정보를 제공하고 클라이언트를 최대한 신뢰하지 않는 것입니다. 게임 유형에 따라 요구 사항이 다르므로 이러한 규칙을 얼마나 잘 준수 할 수 있는지에 영향을 줄 수 있습니다.

FPS 게임에서는 게임 플레이 속도가 너무 빠르기 때문에 클라이언트에게이 정확한 순간에 대해 알아야 할 데이터 만 제공 할 수없는 경우가 종종 있습니다. 당신이 클라이언트에게 모퉁이 주위에 적이 있고 플레이어가 그 모퉁이를 돌고 있다고 말하지 않으면 갑자기 밀리 초 안에 정보를 보내야하거나 플레이어가 죽지 않을 위험에 처하게됩니다. 이제까지 본다.

현재 사용 가능한 이러한 문제에 대한 유일한 "수정"은 아마도 OnLive 일 것입니다. 이 서비스는 데이터 센터에서 안전하게 실행되는 클라이언트의 오디오 및 비디오 콘텐츠 만 제공하기 때문에 부정 행위의 유일한 수단은 들어오는 비디오 스트림을 분석하고이를 기반으로 조치를 취할 수있는 휴먼 AI를 만드는 것입니다. 있다면, 사기꾼들이 달려있다.


3

위의 모든 답변은 훌륭하지만 다른 부분을 추가하겠습니다.

일부 게임에는 매우 견고한 재생 기능이있어 게임 종료 후 모든 게임의 재생을 컴팩트 한 형식으로 저장하고 다양한 방식으로 플레이어의 관점, 실시간 통계 UI 등을 볼 수 있습니다.

내가 잘 알고있는 예 : Starcraft 2. 블리자드가 해커를 차단하는 방법 중 하나는 게임 재생으로 부정 행위 증거를받는 것입니다.

FPS에서 사용하는 예는 다음과 같습니다. 게임을하면서 상대방이 벽을 훔친 것으로 의심되는 경우 리플레이를 본 다음 정상적인 리플레이 비전에서 볼 수 없었습니다. 당신을보고 수류탄을 모퉁이에 던지거나

그런 다음 리플레이와 함께 그를보고하고, 그에 대한 증거가 충분하면 그는 금지됩니다. 내가 아는 한,이 일을하는 회사는 금지하기 전에 진지한 증거 나 동일한 행동에 대한 여러 가지 증거를 얻을 수 있습니다.

따라서 이것은 반박 리 방지 기술이 아니며, 사람이 편리하게 속임수를 증명할 수있는 사용자 보고서 시스템입니다.


0

이것은 완전한 대답이 아닐 수도 있지만 여기에 약간의 정보가 있습니다. 부정 행위를 방지하는 가장 좋은 방법 중 하나는 난독 처리 또는 C / C ++ 사용입니다. 이렇게하면 사람들이 클라이언트 코드를 수정하지 못하게됩니다.


거기에 많은 제독 장치가 있음을 언급 할 가치가 있습니다. 또한 .Net (C #, XNA) 게임은 Reflection을 사용하여 수정할 수 있습니다. 내가 아는 바에 따르면 C / C ++는 실제로 코드를 조작하기 어렵게 만드는 한 가지 방법이라고 생각합니다.
user1306322

네. 내 요점은 난독 화로 쉽게 디 컴파일 된 코드를 읽을 수 없으며 C / C ++은 컴파일하기 쉽지 않다는 것입니다. 둘 다 좋은 옵션입니다.
LiquidFeline

또한 게임을 자주 패치하고 실행 파일에서 이진 오프셋을 변경하거나 임의의 NOP를 삽입하면 해킹이 오래 지속되지 않습니다 ...
SirKnigget

@CPP_Person : 실제로 C는 컴파일하기 매우 쉬운 것으로 유명합니다. 컴파일러 관점에서 볼 때 상당히 복잡한 언어 인 C ++의 경우 완전히 다른 문제입니다. 그러나 나는 이해하지 못하고, 왜 중요한지, 특정 프로그래밍 언어를 컴파일하는 것이 얼마나 쉬운 지-사람들이 좋은 컴파일러를 작성하지 않고 치트 도구를 작성하지 못하게하고 싶어합니다. 어쨌든 기존 C ++ 컴파일러를 사용합니다. 디 컴파일 하드는 컴파일을 어렵게 만드는 것보다 훨씬 더 흥미로워 보입니다.
Kaiserludi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.