PC / Mac 게임은 불법 복제를 어떻게 감지합니까?


27

나는 최근 프로그래머들이 Game Dev Tycoon 의 제작자와 같은 해적으로부터 게임을 보호하는 영리한 방법에 관한 기사를 읽고있었습니다 . 게임 호의 사본이 실제로 기술 수준에서 불법 복제 된 버전이라는 것을 어떻게 감지합니까? 내가 조사한 가장 가까운 대답은 SNES 카트리지가 해적인지 여부를 어떻게 감지 할 수 있 었는가하는 것이지만 그 전략은 PC에는 적용되지 않습니다.


1
이 질문이 너무 광범위하다고 생각합니다. 게임이 불법 복제를 탐지하는 방법에는 여러 가지가 있으며, 그 중 다수는 각 게임마다 다릅니다.
MichaelHouse

10
@ Byte56 질문이 다소 광범위하다는 데 동의하지만 여전히 좋은 질문이라고 생각합니다. 이상적인 해답은 일반적인 불법 복제 탐지 방법을 제공하고 알려진 다른 솔루션을 설명하는 출처에 대한 링크 일 수 있습니다.
kevintodisco

2
아마도 불법 복제를 피하는 가장 좋은 방법은 블리자드가 Diablo III에 대해 한 일을하는 것입니다. 레벨 Y의 플레이어와 함께 방 X에서 상자를 엽니 다). 서버 부분에 대한 블리자드 바이너리 / 소스를 훔치지 않으면이 문제를 해결할 수 없습니다. 어떤 사람들은 에뮬레이터를 만들었지 만 규칙이 같지 않기 때문에 (근사치이므로) 전혀 같은 게임 경험을 제공하지 않습니다.
tigrou

답변:


53

가장 먼저해야 할 일은 컴퓨터가 파일의 불법 복제 여부를 알 수있는 방법이 없다는 것입니다. 불법 복제는 법적 / 도덕적 용어이므로 파일에는 의미가 없으며 1과 0으로 만 구성됩니다.

즉, 불법 복제 방지 및 대책은 일반적으로 사용자가 게임의 사본을 구매 한 경우에만 얻을 수있는 물건 (일반적으로 물건)이 있는지 여부를 알아내는 데 중점을 두어 복제하기가 어렵습니다. 이 작업을 수행하는 방법에는 여러 가지가 있으며 각 방법에는 단점과 단점이 있습니다. 나는 몇 가지를 언급 ​​할 것이다 :

  • 초기 게임은 사용자에게 게임 상자에서 단어를 입력하도록 요구했습니다. 복사기 나 스캐너는이 기술을 쉽게 물리칩니다.

  • 최근에는 미디어 검사가 더 일반적입니다. 게임을 실행하려면 게임 CD가 드라이브에 있어야합니다. 이를 구현하기 위해 예를 들어 게임을 실행할 수없는 CD에서 중요한 데이터 파일에 액세스하거나 CD에 파일이 있는지 간단히 확인할 수 있습니다. 이것은 CD를 복제하기 어려울 때 잘 작동했지만 CD 복사기 및 최근에는 드라이브 에뮬레이터를 사용하여 이러한 기술을 쉽게 물리 칠 수 있습니다.

  • 그러나 CD 사본은 완벽하지 않으므로 다른 많은 기술은 CD가 원본 압축 CD인지 또는 사본인지 감지하는 데 중점을 둡니다. 이를 구현하기 위해 게임에서 프레스 타임 동안 게임 디스크에 삽입 된 비표준 요소 를 확인할 수 있지만 CD 버너를 통해 CD-R에서 쉽고 안정적으로 복제 할 수는 없습니다. 이를 수행하는 몇 가지 일반적인 방법은 다음과 같습니다.

    • CD 파일 시스템에서 액세스 할 수 없지만 존재하는 파일을 찾을 수있는 마스터 링 중에 CD에 더미 "고스트"파일을 작성합니다. 이 데이터는 파일 별 디스크 사본에 없습니다. 전체 디스크 이미지를 복사하면이 파일들이 복사됩니다.

    • 또 다른 방법은 디스크에 의도적으로 오류를 삽입하는 것입니다. CD에는 오류 수정 코드가 포함되어 있습니다. 디스크 리더로 투명하게 수정할 수있는 데이터에 오류를 삽입하면 디스크는 정상적으로 작동하지만 오류는 CD-R에 복사되지 않습니다. 이러한 의도적 인 오류를 찾아서 게임은 CD를 원본 압축 사본으로 간주 할 수 있습니다. RAW 디스크 이미지 복사는이 방법을 능가합니다.

    • 주소는 같지만 데이터가 다른 트윈 섹터를 삽입하면 데이터를 앞뒤로 검색 할 때 다른 결과가 나타납니다. 이것의 존재를 확인하는 것이 가능하며,이 트윈 섹터로 CD를 복제하는 것은 매우 어렵습니다.

    • CD에서 구덩이의 실제 위치를 측정 합니다. 다시 한번, 같은 위치에 구덩이로 CD를 복제하는 것은 매우 어렵습니다.

    그러나 Daemon Tools 또는 Alcohol 120 % 와 같은 많은 CD 에뮬레이터 가 실제로 이러한 기능을 에뮬레이션 할 수 있습니다. 이 때문에 많은 게시자가 CD 에뮬레이터 감지 단계를 포함하고 에뮬레이터가 감지되면 게임이 실행되지 않도록합니다. 에뮬레이터 감지기의 구현은이 답변의 범위를 벗어납니다.

  • 게임은 실제 CD를 확인하는 대신 또는 제품 키 와 같은 일부 데이터를 입력하도록 사용자에게 요청할 수 있습니다 . 제품 키를 사용하는 몇 가지 방법은 다음과 같습니다.

    • 키의 수학적 특징 확인. 그러나 이것이 키 복제를 방해하지는 않으며 검사 알고리즘이 발견되거나 리버스 엔지니어링 된 경우 해적은 마음대로 게임에 합법적 인 것으로 보이는 새 키를 만들 수 있습니다. 원하는대로 키를 생성하는 소프트웨어를 " keygens "라고합니다.

    • 사용자 하드웨어를 기반으로 해시를 생성하고이 해시와 제품 키 (일반적으로 "설치 키"라고하는 조합)를 게임 회사 소유의 서버로 보내고 해시와 시리얼을 기반으로 활성화 키를 만듭니다 . 모듈 식 산술 또는 타원 곡선이있는 일부 방법과 같은 단방향 숫자 방법을 사용하면 게임에서 활성화 키가 해시 및 직렬 코드와 일치하는지 확인하고 일치하는 경우에만 실행할 수 있습니다. 이 기술을 "활성화"라고합니다.

    활성화시 서버는 동일한 직렬 코드를 가진 여러 하드웨어 해시에 활성화 키를 제공하지 않을 수 있습니다. 이로 인해 시리얼 코드와 활성화 키가 복사 되더라도 활성화 키가 일치하지 않고 다른 컴퓨터에서 게임이 실행되지 않습니다.

이러한 모든 조치는 사용자가 구매 한 게임 사본을 소유하는지 여부를 찾기위한 것입니다. 그러나이를 구현하려면이를 확인하는 프로그램 코드가 필요합니다. 해적 은 복제 방지 메커니즘 자체를 공격하는 대신 게임 코드를 수정 하여 검사비활성화하거나 무시할 수 있습니다. 불법 복제 방지 검사를 제거하기 위해 게임 바이너리를 수정하는 행위를 "크래킹"이라고합니다.

크래킹은 단순히 게임 실행 파일을 분해하고 관련 검사가 이루어지는 장소를 찾거나 검사를 비활성화하도록 수정하거나 결과를 무시하고 다시 조립하는 것으로 구성 될 수 있습니다. 크래킹을 방지하는 몇 가지 방법은 다음과 같습니다.

  • 해시로 바이너리를 확인 중입니다. 그러나 해시를 검사하는 프로그램이 있어야합니다.

  • 프로그램 또는 단순히 점검 루틴을 암호화하고 런타임에 해독합니다. 하나 이상의 추가 암호 해독 단계가 포함되므로 분해가 더 어려워집니다. 암호 해독 키가 프로그램에 포함 된 경우 (해당 암호가 없으면 게임 암호를 해독 할 수 없기 때문에) 해적은 암호 해독을 역 엔지니어링하고 루틴을 찾고 복제 방지 기능을 수행 할 수 있습니다.

    이 때문에 게임 게시자는 키를 최대한 찾기 어렵게하고 선택적으로 해독 알고리즘을 이해하기 어렵게 만들고 싶습니다. 키를 찾기 어려운 몇 가지 방법은 다음과 같습니다.

    • 이상한 방식으로 작성하여 모호하게하십시오. 이것은 단순히 크래킹 프로세스를 느리게합니다.

    • 위에서 언급 한 직렬 보호와 유사한 머신 별 마스터 키를 작성하십시오.

    그러나 키를 만드는 데 사용하는 방법에 관계없이 암호 해독이 진행되는 동안 키 자체는 메모리에 저장됩니다. 메모리 검사기, 디버거 및 에뮬레이터는 메모리에있는 동안 해적이 키를 찾아 복사하는 데 도움을 줄 수 있습니다. 메모리 엿보기는 여러 가지 방법으로 공격 할 수 있습니다.

    • 지정된 지역에서 메모리 액세스를 감지하고 다른 곳으로 주소를 리디렉션하는 권한있는 서비스가 있습니다. 이를 위해서는 링 0 액세스가 필요하며이를 수행하는 프로그램은 합법적이지 않은 목적 으로 더 일반적으로 사용 되므로 바이러스 백신 소프트웨어는 일반적으로 차단합니다. (많은 게임 및 기타 소프트웨어가 실행 중 바이러스 방지 기능을 해제하도록 요청하는 이유). 이를 올바르게 수행하는 소프트웨어를 작성하는 것은 매우 어렵고 호스트 OS의 안정성과 보안을 쉽게 손상시킬 수 있습니다. XCP 스캔들 이 방법 사라 잘못의 구현의 좋은 예입니다.

    • 최신 하드웨어 및 운영 체제는 메모리 커튼 , 보안 미디어 경로TP 모듈 과 같은 일부 도구를 제공 하여 메모리 검사에 저항하면서 데이터를 해독하는 프로그램을보다 쉽게 ​​만들 수 있습니다.

사소한 것에서부터 난해한 것에 이르기까지 불법 복제를 공격하는 더 많은 기술이 있습니다. 불행히도, 이러한 모든 기술이 실제 사본을 인식하지 못할 수 있으며 일반적으로 오 탐지율이 높은 공격적인 기술입니다.

게임 게시자는 일반적으로 구현 비용, 예상 크래킹 시간 및 오 탐지 비율이 예상과 일치하는 기술 세트를 선택하려고합니다.

불법 복제 방지가 완전히 깨지지 않는 것은 일반적인 오해입니다. 대부분의 게임 판매는 출시 후 처음 몇 개월 동안 이루어 지므로 불법 복제 방지 체계는이를 깨뜨리기 전에 게임 게시자가 중단되기 전에 많은 양의 수익을 모을 수있는 충분한 시간을 소비하는 경우 일반적으로 효과적인 것으로 간주됩니다.

Game Dev Tycoon과 관련하여 불법 복제 방지 기술을 사용하지 않았습니다. 그들은 단순히 "깨진"빌드를 만들어 언급 한 기사의 시작 부분에 언급 된 것처럼 BitTorrent에 배포했습니다.


1
경쟁적인 답변이 있더라도 나는 당신의 답변, 더 나은 프레젠테이션 및 분명히 더 많은 시간을 들여 놓기 위해 모자를 내려야합니다. 더 나은 기술 적용 범위와 나는 "메모리 커튼, 안전한 미디어 경로 및 TP 모듈"에 대해 들어 본 적이 없다고 말해야한다. 그게 뭐야 ??
v.oddou

@ v.oddou : 하드웨어 지원 DRM에 사용할 수있는 요소입니다. TP 모듈은 암호화 프로세서 칩입니다. 많은 최신 (2007 이상) 컴퓨터에는 TPM이 포함되어 있습니다. 메모리 커튼을 사용하면 OS에서도 읽을 수없는 쓰기 전용 메모리 섹션을 만들 수 있으며 특히 TPM에서 사용할 키를 저장합니다. 보안 미디어 경로는 콘텐츠가 암호화되어 끝까지 암호화 된 시스템입니다 (디스플레이까지). 이러한 기술을 올바르게 사용하는 것은 그리
쉬운

작은 추가 기능과 마찬가지로 스파이로 복사 방지에 대한 훌륭한 기사가 있습니다 .gamasutra.com / view / feature / 3030 / keeping_the_pirates_at_bay .php
leander

이 답변은 완전히 잘못되었습니다. youtube.com/watch?v=FVVx5WYmO2s 중재자 개입을위한 플래그입니다.
Krythic

@Krythic 어떻게 당신 자신을 작성 하는가?
Panda Pajama

3

자신의 실행 파일에서 MD5 또는 SHA256을 실행하면 최종 릴리스를 빌드 한 후 바이너리로 하드 코딩 된 것에서 서명이 변경된 것을 감지하면 분명 누군가가 실행 파일을 해킹 한 것입니다. 그런 다음 대부분의 회사는 더 이상 PE가 깨 졌거나 바이러스가 발견되었다고 말하는 팝업을 더 이상 표시하지 않고 게임을 종료합니다. 해커는 매우 빠르게 반열됩니다. 대화 상자의 메시지 루프에서 게임이 일시 중지되었으므로 대화 상자가 표시된 분기로 인해 즉시 확인하고 조건 확인시 코드를 변경하여 분기를 우회하십시오.

오늘날 기업들은 게임 플레이를 매우 미묘하게 변경하여 몬스터의 수명을 곱하여 게임을 플레이 할 수 없게 만들거나이 관리 게임에 엄청나게 영리하게 통합하여 게임 회사를 운영하고 너무 많은 플레이어가 게임을 해적하고 있기 때문에 결국 느슨해집니다. 이 경우에 좋은 mise en abyme. 때때로 그것은 단지 회사 서버에 업로드 된 적기를 가져오고 지원을 위해 전화를 걸 때 연설을하거나 신원을 밝히는 데 갇혀 있습니다.

그러나 이것은 모든 주제이며 기술은 해싱입니다. 이 검사는 바이너리의 여러 곳에서 실행될 수 있으므로 해커가 하나를 찾아 지우면 충분하지 않습니다.

편집 : 게임을 그대로 복사하면 게임에 불법 복제 방지 조치가 전혀 없다면 효과가있을 수 있습니다. CD 버너 시대 이전의 아주 오래된 게임으로 작업하고있었습니다. 그렇기 때문에, 대부분의 경우, 복사 된 설치 폴더 만이 아니라 게임이 실행되도록 설치되어야합니다. 여기에는 시스템의 모든 곳에 숨겨진 파일과 레지스트리 키가 있습니다. 게임은 이러한 것들이 있는지 확인합니다. 설치 프로그램 만 만들 수 있습니다. 또한 설치 프로그램은 CD에서만 실행할 수 있으며 디스크의 첫 번째 바이트에서 오류 수정 코드 시스템을 준수하지 않는 불규칙한 비트로 인해 복사 할 수 없으므로 대부분의 CD 플레이어 드라이버가 종료됩니다. 알코올의 nero와 같은 일부 복사 소프트웨어는 오류를 무시하도록 제안하지만 오류가 발생한 것이 수정 된 복사 본인 경우 설치 관리자가이를 감지하여 다시 이동합니다.

EDIT2 :

질문 : 파일을 해시 한 다음 해시를 변경하는 파일에 해시를 삽입하는 방법은 무엇입니까?

@ Byte56 : 젠장 우리는 여기에 지능형 의견을 얻고 있습니다 :) 그렇습니다. 역설이며 해결할 수 없습니다. 따라서 해시는 해시를 포함하지 않는 바이너리 부분에서 만들어야합니다. 그리고 자체 검사로 해싱 할 때 해당 영역을 제외하려면 검사 코드가이를 알아야합니다. ~~ #### [put hash here] #### ~~와 같은 태그를 사용하여 해시를 묶고 제외하는 사람들을 보았습니다. 그러나 해커가 쉽게 발견 할 수 없다는 결점이 있기 때문에 해시가 뒤섞여 여러 위치에 흩어져 있어야합니다. 암호화되지 않은 이유조차도 동일한 위장 작업으로 개인 키를 저장합니다.


게임 파일을 그대로 복사하면 어떻게됩니까? 이 경우 해시가 유효하지 않습니까?
Panda Pajama 5

@ 판다 파자마 : 훌륭한 발언. 편집하고 있습니다.
v.oddou

실행 파일을 해시하고 실행 파일에서 해시를 하드 코딩하여 해시를 변경하는 방법은 무엇입니까?
MichaelHouse

@ Byte56 : 다시 편집 :)
v.oddou

@MickLH : 나는 그 경험에 동의 한 이유 때문에 사람들이 자연스럽게 깎아 지른듯한 돈을 버려야한다는 이유 때문에 당신의 대답이 마음에 들었습니다. 너무 안타깝게도 실제로 질문에 대답하지 못했고 당신은 하향 투표를 받았습니다 (자연스럽게 말할 수 있음). 개인 키에 대해 절대적입니다. 이 개인 키는 해시 암호화 이상의 가치가 있으며 신용 카드 데이터베이스와 같은 큰 가치는 없습니다. 그러나 당신이 주장하면 체크섬은 서버에서 확인하기 위해 네트워크로 전송 될 수 있습니다. 그러나 보안은 가장 약한 지점으로 만 강한이며, 이는 심각한 결함, 해커가
v.oddou

-5

그들은 단지 맥 게임에서 확장 파티션을 넣을 수 없다

맥은 ext를 읽을 수 없습니다


파티션에 필요한 파일이 있으면 게임을 실행할 수 없습니다. 파티션의 존재가 정당한 사본이라는 "증거"인 경우 복제하기가 매우 쉽습니다.
Jesse Williams
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.