일부 MMO에서 클라이언트 메모리를 편집하면 속임수가 허용되는 이유는 무엇입니까?


19

게임 클라이언트의 메모리를 편집하는 이유는 무엇입니까? 왜 클라이언트와 함께 많은 "해킹 방지"도구가 제공됩니까?

클라이언트-서버 게임을 디자인한다면, 서버 (게임 세계의 시뮬레이션)에서 모든 일이 발생하고 클라이언트는 캐릭터 주변의 세계 일부에 대한 상태 업데이트를받는 수동적 소비자 일뿐입니다. 키 입력 또는 이동 / 동작 명령. 어쩌면 나는 여기에 뭔가 빠졌지 만, 그 디자인으로 클라이언트 메모리에서 STR을 200으로 올리는 것과 같은 해킹 (값이 전혀 없다면) 아무런 영향을 미치지 않을 것입니다.

내가 생각할 수있는 유일한 설명은 메모리 편집이 작동하는 게임이 시뮬레이션의 일부를 클라이언트와 서버에서 실행 한 다음 모든 클라이언트를 주기적으로 동기화한다는 것입니다. 경기가 구성되면 고정 플레이어 수를 가진 실시간 전략 게임을위한 디자인을 이해할 수 있지만 MMORPG에서는 왜 그런가요? 서버로드를 줄이는 전략입니까?


2
서버로드뿐만 아니라 대기 시간 문제도 있습니다. 예를 들어 Minecraft는 모든 클라이언트 측 이동을 가장 쉬운 솔루션 (순수한 클라이언트 측 이동, 클라이언트 측 예측 또는 지연된 이동 중)이므로 모든 클라이언트 측을 처리합니다. (Minecraft는 일반적으로 느리게 진행되는 게임이므로 예측 프레임 워크가 없으므로 움직임을 예측하는 것은 많은 작업
이어서

답변:


21

이상적이지만 클라이언트에 대한 입력 확인의 계산 부하 및 대기 시간 측면에서 서버에 대해 모든 단일 입력의 유효성을 검사하는 것은 실제로 불가능합니다 .

결과적으로 대부분의 MMO에서 서버에 대해 검증 되지 않은 몇 가지 사항이 있습니다 . 경우에 따라 캐릭터 이동의 특정 클래스가 포함되기 때문에 순간 이동과 스피드 핵이 존재합니다. 물론 클라이언트 측 보호는 충분한 시간이 필요하지만 우회 할 수는 있지만 해킹에 추가적인 장벽을 제공합니다. 이를 방지하기 위해, 그러한 많은 게임은 실제 사용 된 보호의 로깅 및 사후 검증 및 로테이션 전략을 사용합니다.

또한 정보를 수집하고 키 프레스 및 기타 입력을 사람이 정상적으로 반응 할 수있는 것보다 빠르게 클라이언트를 통해 다시 전송할 수있는 다른 간단한 메모리 스크랩 해킹 문제도 있습니다. 또는 클라이언트에게 전송 될 수 있지만 아직 보이지 않을 수도있는 정보를 찾을 수 있습니다 (예 : 초기 디아블로 맵 해킹에서 흔히 볼 수있는 것처럼 가까이 있지만 아직 어디에도 표시되지 않은 생물의 위치).


그것은 게임 클라이언트의 메모리를 보는 것에 대한 관심과 그것을 막는 것에 대한 관심을 설명 할 것입니다. 내가 본 마지막 게임에서 개인적으로 본 순간 이동 해킹.
Hatoru Hansou

2
흥미롭게도 Ark : Survival Evolved 게임 은 서버에서 모든 것이 (입력, iirc까지) 검증되었다고 말합니다. 정확히 WoW 유형 MMO는 아니지만 알파의 70ppl 서버 (톤의 npc 디노 및 플레이어 내장 구조)를 지원합니다. 확실히 지연을 느낄 수 있지만 점점 나아지고 있습니다. 기술이 발전함에 따라 이것이 점점 더 대중화 될 것이라고 생각합니다.
slicedtoad

5
"70 명"은 내가 지원 한 MMO보다 서버 당 최소 수십 명 (사실 몇 명)이 적습니다. 또한 거의 모든 사람들이 해커에게 해킹 개발에 대한 다리를 제공하지 않는 방법으로 서버에서 모든 작업을 수행 한다고 말합니다 .

@ slicedtoad 나는 그것을 언급하려고했다. 어쨌든 대부분의 MMO는 인스 턴싱을 사용하기 때문에 ARK 방법은 그 내부에서 작동 할 수 있습니다. 많은 양의 플레이어 에게이 작업을 수행하는 것은 불가능합니다.
마스트

10

보호 기능이있는 이유 중 하나는 게임 상태를 읽으면 봇이 게임 상태를 파악하고 그에 따라 행동 할 수 있기 때문입니다.

예를 들어, MMO에서의 연삭 : "봇"이 폭도 주변을 알고 있으면 게임 클라이언트에게 폭도를 선택하고 수명이 0이 될 때까지 치면 전리품을 집어 들고 헹구고 반복 할 수 있습니다. 이를 통해 시뮬레이션에 대한 모든 변경 사항이 서버 측에서 확인되거나 확인 되더라도 일부 플레이어는 부정 행위를 할 수 있습니다. 명령은 가짜 마우스 클릭 또는 키 다운 또는 메모리 쓰기를 통해 전송 될 수 있습니다.

이것이 MMO가 메모리 보호를 사용하는 이유 중 하나입니다.


좋아, 봇은 신 모드로 들어갈 수 없어도 프로그램이 당신을 위해 모든 것을하는 것이 바람을 피우는 것이 더 의미가 있습니다. 그러나 내가 플레이 한 게임의 "해커"가 한 번의 공격으로 죽일 수있는 이유는 무엇입니까? 게임 메모리 및 서버 편집 표시가 어떻게 든 변경 사항을 확인하는 것이 아닙니까?
Hatoru Hansou

1
@HatoruHansou 예. 그리고 귀찮은 부분은 무인 봇이 자체적으로 운영 할 수 있다는 것입니다. 금 농부 한 명의 직원이 온라인으로 10 시간 동안 24 시간 활동하는 10 대의 컴퓨터를 모니터링한다고 상상해보십시오. MMO가 망가졌습니다. 일부는 다른 플레이어를 위해 특별한 취급을 할 수도 있습니다 ( "잔디에 머물지 마십시오 . 여기는 방입니다"(처음에는 리니지 II)).
Vaillancourt

봇 인구가 통제없이 성장하고 게임이 곧 중단 될 수 있습니다. 봇만으로도 해킹 방지 기능을 정당화 할 수 있습니다. 답변을 수락하기 전에 잠시 기다립니다.
Hatoru Hansou 1

@HatoruHansou 확신 :) 어쨌든 메모리 보호에 대한 모든 이유가 확실하지 않습니다 :)
Vaillancourt

6

많은 MMO는 클라이언트 측 적중 예측으로 설계되었습니다. 따라서 클라이언트에 적중이 있으면 적중이 있었다는 결과를 서버로 보냅니다. 이 경우 서버는 정식 권한이 없으므로 부정 행위가 가능합니다.

솔직히 말해서, MMO를 디자인하는 경우 클라이언트가 클램핑 된 입력 값만 서버에 보내고 서버가 결과를 해결하도록 서버를 완전히 정식으로 만들 것입니다.

이것이 많은 MMO에 의해 아직 수행되지 않은 이유에 관해서는, 게임의 느낌과 응답 성을 깰 수 있기 때문에 완전한 권한을 가진 서버가있는 추가 서버로드와 '응답 지연'에 대해서만 생각할 수 있습니다.


메모리 해킹이 효과적이라고 설명합니다. 신뢰할 수있는 서버 디자인에 관한 기사 / 논문에 대한 링크가 있습니까?
Hatoru Hansou

4
로드 만 문제가되는 것은 아닙니다. 응답 성이 핵심입니다. 네트워크로 연결된 실시간 게임 대기 시간 숨기기 기술을 사용해야합니다 . 모든 사람이 동의 할 수 있도록 서버는 각 클라이언트에서 발생한 이벤트를 주문하는 방법을 가져야합니다. "나를 먼저 쏴" "아니요, 먼저 쏴"와 같은 상황을 피하려고합니다. Counter-Strike와 같은 게임의 Speedhacks는 서버 등이 감지하는 대기 시간을 조작하여이 동기화를 남용합니다 (대부분의 CS 서버가 100-200ms 이상의 대기 시간으로 플레이어를 쫓는 이유 중 하나입니다).
Luaan

3
엄격하게 턴 기반 게임을 만들지 않는 한 이것은 피할 수 없습니다. 대기 시간은 항상 존재 하며 네트워크 게임에 관련된 모든 컴퓨터는 이벤트를 주문하려면 "공통 시간"에 동의해야합니다. 대기 시간을 관리하는 최상의 시스템을 사용하더라도 항상 불일치가 발생하지만 숨기는 데 매우 능숙합니다. 문제는 일단 그 작은 것들을 만들기 시작하면 미묘한 버그가 사라지기 쉽다는 것입니다. 예를 들어 클라이언트가 첫 번째 킬 전에 두 번째 킬이 발생했다고 가정하면 같은 몬스터를 두 번 죽일 수 있습니다. 그것은이다 하드 .
Luaan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.