본문 바로가기

게임

치트엔진 사용법

728x90
반응형

치트 엔진 사용법


에디터 혹은 치트키가 갖춰진 게임들도 있지만 유명하지 않은 게임이라 능력자들이 에디터를 만들어두지 않은 경우들이 많다.

그럴 때는 나는 예전엔 치트오매틱 같은 프로그램을 자주 썼엇는데 언젠가부터 치트 엔진을 주로 사용했다. 치트 엔진의 장점은 데이터가 갖춰진 게임이라면 어렵지 않게 값 편집이 가능하다는 점이다. 특히나 한글 모드를 지원한다는 것이 큰 장점이다.


Cheat engine


다운받는 곳 : https://www.cheatengine.org/

이 글 작성일 기준(19/5/24) 6.8.3 버전이 올라와 있다.

위 장소에서 다운 받은 뒤 설치를 하자. 그 과정 사이에 악성코드를 제거하는 프로그램을 설치할지 물어보는데 사용자의 취향에 따라 체크를 해제하면 치트엔진만 설치할 수 있으니 알아두자.


 에딧전 알아두어야 할 사항(공통)


1. 치트 엔진을 통해 값을 편집하려면, 편집하려는 게임을 틀어둔 상태에서 편집이 가능하다. 게임을 실행 시킨 후 Alt + Tab 을 이용해 바탕화면으로 나온 뒤 치트 엔진을 통해 편집하자.

2. 데이터 변경을 막기위해 값을 변경해 둔 게임들도 종종있다. 예를들면 게임 속 캐릭터의 힘을 변경하려고 하는데 개발사에서 원래 힘 수치인 10이 아닌 34234 등 임의의 값으로 설정해 둔 경우이다. 이런 경우를 감안하고 편집을 해야한다.

3. 에디터를 하려는 게임의 모든 공통사항이지만 세이브 파일을 미리 백업해두고 편집을 실시하자. 자칫하다 충돌로 인해 세이브 파일이 날아가는 현상이 발생할 수도 있다.

4. 온라인 게임 같은 경우 안먹히도록 설정해 둔 경우가 많고 이러한 프로그램을 사용시 계정이 막히는 경우도 있으니 사용시 유의하길 바란다.

5. 치트엔진이 막힌 게임들도 많다.


치트엔진의 원리는 이렇다.

내가 변경하려는 값 A의 값이 50이라고 하자. 하지만 데이터상 주소형태로 표시되어 있기 때문에 어떤 주소가 A를 의미하는지 모른다.

그래서 검색을 통해 50의 값을 가진 모든 데이터를 찾고 A값의 변경을 통해서 처음에 검색된 값들을 하나씩 소거해 주는 것이다.

A의 값을 변경하며 치트엔진에서 계속 검색을 하다보면 결국 주소인 데이터 값을 알 수 있게 되고 그것이 A값이라고 판단할 수 있다.


이러한 원리를 통해 치트엔진을 사용하면 된다.


 한글화


다운받는 곳 : https://www.cheatengine.org/downloads.php

값만 변경하면 되기에 굳이 한글화가 필요없지만, 필요한 사람들을 위해 작성하게 되었다.

해당 장소로 이동 후 Translations 란에서 한글 패치를 다운 받자.

Korean translation files(ko KR)을 받으면 된다.

다운 받은 Ko_KR의 압축을 풀고 치트 엔진이 설치된 장소의 languages 폴더 안에 넣어준다.

내 경우는 D드라이브에 설치했기 때문에 D/Program Files/Cheat Engine 6.8.3이 설치 폴더이고

D/Program Files/Cheat Engine 6.8.3/languages 에 ko_KR 폴더를 넣어주면 된다.

languages 폴더에 한글 패치를 넣어준 뒤 language.ini을 열어준다. 워드패드나 메모장으로 열리지 않으면 메모장을 킨 뒤 해당 파일을 메모장에 이동시키면 열린다.

해당 내용의 preferedLanguage = * 에서 * 자리를 변경해 주어야 한다.

그 자리에 한글 패치 폴더명인 ko_KR을 입력해 준 뒤 저장하자.

그 다음 치트 엔진을 켜주면 한글 패치된 치트 엔진을 볼 수 있을 것이다.

단, 단점이 있다면 6.6버전으로 고정되어 버린다는 문제가 있다.

여기까지가 한글패치에 관련된 정보였고 패치된 상태도 유용할 수 있지만 치트엔진의 기능의 일부분을 이용하는 것이니 영어판인 6.8.3으로 계속 설명하도록 하겠다.

다시 영어판으로 돌리려면 아까 수정한 메모장의 ko_KR을 *로 다시 변경하면 된다.


 검색방식


치트 엔진은 여러 방식의 검색이 가능하다. 

Scan Type을 누르면 5개의 첫 검색 방식이 나온다.

Exact Value - 정확한 값을 찾아내는 방식이다.

Bigger than... - 입력한 값보다 큰 값을 찾는 방식이다.

Smaller than... - 입력한 값보다 작은 값을 찾는 방식이다.

Value between - 정확한 값을 모르지만 어느 사이에 있다는 것을 알때 이 것을 사용한다.

Unknown initial Value - 어느 값일지 모를 때 전체 값을 대상으로 하는 방식이다.


팁을 주자면 값을 정확히 아는 경우에는 Exact Value 방식을 통해 값을 찾아내면 되고 해당 방식으로 찾지 못한다면 게임상 수치와 데이터상 수치가 다른 경우인 상황이 많다. 이 경우에는 Unknown initial Value를 사용한다.


첫 검색 이후 Scan Type

2번째 검색부터는 앞서 보았던 검색법에서 모든 값을 찾는 Unknown initial value를 제외하고 7가지의 방식이 더 등장한다. 

Increased value - 첫 검색에 사용한 값보다 증가한 값을 찾는다. (증가하였으면 무조건 다 찾는다)

Increased value by - 첫 검색에 사용한 값보다 x만큼 증가한 값을 찾는다. x는 추가로 입력한 값이다.

Decreased value - 첫 검색에서 사용한 값보다 감소한 값을 찾는다. (감소하였으면 무조건 다 찾는다)

Decreased value by - 첫 검색에 사용한 값보다 x만큼 감소한 값을 찾는다. x는 추가로 입력한 값이다.

Changed value - 처음 값에서 바뀐 값을 찾는다. (첫 값에서 바뀌었으면 무조건 다 찾는다)

Unchanged value - 처음 값에서 바뀌지 않은 값을 찾는다. (첫 값에서 바뀐 값들을 전부 제외한다.)

Compare to first scan - 처음 값과 같은 것을 찾는다.


데이터의 값이 게임상과 다르다면 값을 모를 때 찾을 수 있는 Increased value, Decreased value, Changed value, Unchanged value, Compare to first scan 을 적절히 사용해주면 찾아낼 수 있다.


값을 규정하는 방식도 여러가지가 있다.

Binary - 2진법 입력 방식이다. value값 입력 좌측의 Bits(2진법), Decimal(10진법) 중 선택해서 찾을 수 있다.

Byte - 기본적인 값 입력 방식이다. Byte 2Bytes 4Bytes 8Bytes 중 선택이 가능하다. 

Float - 실수형으로 소수점까지 검색이 가능한 방식이다. 7 입력시 7이상 8이하의 소숫점 값을 전부 찾아준다.

Double Float의 8bytes 실수형으로 입력방식이라 생각하면 된다.

String , Array of byte , All, Grouped 방식은 잘 모르겠다. 위 방식들만 알아도 충분히 검색이 가능하다.




 에딧 과정(게임값과 데이터 값이 같은 경우)

값 에디터에 도움을 줄 게임은 X-COM : Enemy whithin 이다. X-COM1의 경우 별도의 설정을 변경해 콘솔을 입력할 수 있는 방법은 있지만 설정 변경이 번거롭고 막힌 경우가 허다하다.

우선 게임을 켜고 치트 엔진도 실행시키자

치트엔진의 화면에서 컴퓨터에 돋보기를 가져다 댄 그림을 눌러 process list를 불러온다. 

process list 중에 자신이 값을 바꾸고 싶은 게임이 있을 것이다. 여기서 예시로 사용한 게임은 X-COM이니 X-COM을 선택해서 Open을 눌러준다.


그 다음 게임으로 가서 바꾸고 싶은 값을 선택한다. 먼저 돈 에딧을 하려고한다.

쉬움 상태에서 처음 지급받는 돈은 315인데 이 값을 치트엔진에 입력한다.


변경할 값인 315를 입력하고 enter 혹은 Next Scan을 입력하면 좌측 데이터칸에 해당 값을 가지고 있는 데이터들이 쭉 나온다. 315를 입력하였기에 315값을 가진 데이터들이 1,529개 나온 상태이다.

그리고 빨간 데이터의 경우 검색할 당시에는 315였지만 316으로 변경되었기 때문에 316으로 나온다. 우리는 이런 다른 데이터들을 소거해 필요한 데이터 값을 찾는 것이다.


다음 과정은 돈을 소비하거나 모아서 값을 바꿔줘야 한다. 315원을 가지고 있었지만 25원의 구급상자 하나를 제조해 290으로 바꿔준다.


이제 290을 입력해 아까 315의 데이터들 중 290의 값을 가진 하나를 추출해냈다. 보통의 경우 데이터가 많기때문에 돈을 소비하고 값을 바꿔주는 과정을 몇 번 거쳐야 하는데 값을 두 번 입력하고 결과가 나왔다. 매우 이례적인 상황이다.

해당 데이터를 더블 클릭하여 밑의 창으로 보내고 바꿀 값인 290부분을 더블클릭해 값을 변경해준다.

추가로 왼쪽 Active를 활성화 시켜주면 바뀐 값으로 값이 고정된다. 즉 9999에서 돈을 소모해도 9999로 나타난다는 말이다.

값이 9999로 변경되었다.

값 변경은 이런식으로 진행된다.


 에딧 과정(게임값과 데이터 값이 다를 경우)

값 에디터에 도움을 줄 게임은 Clickdraw Clicker 이다. 이 게임은 카우보이가 되어 결투를 하는 게임인데 랜덤성을 가진 사격방식으로 승리하기가 상당히 난감한 게임이다. 필자는 도전과제 완료를 위해 치트엔진의 힘을 빌렸다.

게임 방식은 적을 쏘는 자리 5개, 아군이 피하는 자리 3개를 선택해 아군이 죽지 않고 적을 제압하는 것이 목적이다. 그렇다면 기본적으로 치팅이 필요한 값은 탄창과 아군 피이다. (나중에는 몇 발 내로 제압하는 미션이 있는데 그때는 그 값도 변경해주어야 한다.)

모르는 값을 변경하는 것을 알려주는 자리이니 탄창만 설명하겠다.

탄창은 모두 6발씩 2클립이 있다. 총 12발이라는 의미인데 이 게임은 데이터 값이 다르기 때문에 절대 12를 입력해서는 값을 알아낼 수가 없다.


스캔 타입으로 Unknown initial value를 선택하고 검색해주자. 그 다음 값을 변경하지 않은 채 Unchanged value로 다시 검색한다. 

모든 값을 대상으로 하기에 무려 10,843,399의 주소 데이터가 검색되었다. 

이제 부터 값을 찾는다. 총알을 한발 쏘고 Changed value로 검색하고를 반복한다. 도중에 죽어도 상관없다. 다시 스테이지를 켜면 총탄은 꽉 차있기때문이다. 

변칙적으로 총알을 쏘지 않은 채 Unchanged value로 변한 데이터를 소거해도 된다.



마지막으로 남은 3개의 주소 데이터이다. 문제는 이 값들이 함께 움직여서 총알을 쏘면 같이 움직인다. 이 경우 3개의 값 모두를 검증해주면 된다.



저 Active 박스는 값을 변동시키지 않는 기능을 하는데 체크하고 총을 쏜다면 탄창이 변동하지 않으니 유지될 것이다. 하나씩 체크하고 총을 한발씩 쏴보자. 탄창이 유지되는 값이 바로 탄창의 주소 데이터이다.

내 경우는 3번째 값이 탄창의 값이었다.


이제 다시 탄창을 꽉 채운 뒤 값을 고정해버리면 탄창은 절대 줄지 않는다.

해당 게임의 경우 주소도 고정되지 않고 일정 시간을 기준으로 변경되기 때문에 계속 사용할 수는 없다. 이런식으로 메모리 데이터 값을 변경하는 것을 막아논 경우들이 많은데 그럴 땐 다시 검색해 주면 된다.


트레이너, 에디터, 치트 등을 발견하기 힘든 게임의 경우 이런식으로 치트엔진을 사용한다면 몇 번의 데이터 변경으로 게임 플레이를 수월하게 할 수 있다.

단점은 해당 값을 전부 갈아줘야 하기 때문에 변경해야 할 값이 많을 경우 수십 번 혹은 수백 번의 데이터 검색을 해야한다. 

먼저 게임 상 수치를 통해 검색해보고 안된다면 임의의 값 검색법을 이용해 치트엔진을 이용하도록 하자.


반응형

'게임' 카테고리의 다른 글

스팀 폴더위치 찾기  (5) 2019.06.18
Hearts of Iron4 치트키  (1) 2019.04.14
앙빅(angvik)  (0) 2019.04.12