본문으로 바로가기

파일의 IT 블로그

  1. Home
  2. 보안 강좌/CheatEngine
  3. [Cheat Engine] 치트엔진 튜토리얼 #1, #2 풀이

[Cheat Engine] 치트엔진 튜토리얼 #1, #2 풀이

· 댓글개 · KRFile

안녕하세요 파일입니다. 이전글에서 간단히 치트엔진이 어떤 프로그램인지, 컴퓨터 구조가 어떻게 돌아가서 프로그램이 어떻게 돌아가는지 소개를 해드렸습니다. 오늘은 본격적으로 "치트엔진" 이라는 프로그램의 사용법을 배워보도록 하겠습니다.

 

치트엔진 설치하기

일단은 치트엔진 사용법을 알아보려면, 치트엔진을 설치해야 합니다. 물론 이 글을 읽으러 온 분들은 치트엔진이 대부분 설치되어 있겠지만 일단은 가이드 글을 작성중에 있으므로 설치법부터 소개해드리도록 하겠습니다.

 

1. https://www.cheatengine.org/ 로 이동해 Download Cheat Engine 버튼을 눌러 치트엔진을 설치합니다.

설치 파일의 형태이며, 다운로드 받았으면 실행합니다.

 

2. 설치할 때 언어는 English (영어) 로 선택합니다. 치트엔진은 오픈소스 프로그램인데도 아직도 한국어 지원이 없습니다 ㅠㅠ.. 

 

3. 설치할 때는 대부분 Yes(네) 를 눌러서 진행해주시면 되나, 이렇게 중간 중간 광고 프로그램이 설치되는 걸 허락하냐고 묻는 경우가 있습니다. 쓸 데 없는 애드웨어 프로그램이 설치되니깐 중간 중간 이상한 프로그램에 대한 설치 동의를 물으면 반드시 Decline(거부) 를 눌러주세요.

 

4. 설치가 끝났다면 윈도우 작업표시줄 아래에 왼쪽 검색에 cheat를 검색하면 치트엔진이 설치된 걸 확인할 수 있습니다 .보시다 싶이 치트엔진은 실행 파일이 1개가 아닙니다.

 

끝에 적힌 문구로 추정이 되시겠지만, [**64-bit**]라고 적힌 치트엔진이 64비트 윈도우 용, [**32-bit**]라고 적힌것이 32비트 윈도우용 입니다. 아시다 싶이 64비트 컴퓨터는 32비트 프로그램이 전부 호환되어 실행할 수 있기 때문에 본인 컴퓨터가 64비트여도 32비트용 치트엔진을 사용할 수 있습니다.

 

그러나 좀 특이하게 보이는 것으로 [**64-bit SSE4-AVX2**] 와 Cheat Engine Tutorial 이라는 프로그램이 보입니다.

우선 SSE4-AVX2의 버전의 경우 64비트 컴퓨터 중에서 인텔의 최신 명령어를 이용할 수 있는 버전이고, Cheat Engine Tutorial 이 바로 우리가 치트엔진을 연습할 때 해킹을 모의로 실습해볼 튜토리얼 프로그램입니다.

 

일단 대부분 64비트 컴퓨터를 사용하고 계실태니, 여러 치트엔진 버전 중에선 대부분 64-bit 버전을 사용하시면 됩니다. SSE4-AVX2나 32bit 을 사용해도 일반적으로 무방하나 일단은 64bit 버전을 사용하는게 일반적으로 정신건강에 좋습니다.

 

본 글에선 Cheat Engine (64-bit) 버전을 사용하여 Cheat Engine tutorial (64-bit) 에 대한 문제 풀이를 진행합니다.

환경은 윈도우 10 64비트 컴퓨터에서 진행하는 것으로 하겠습니다.

 

* 본인 컴퓨터가 몇비트 컴퓨터인지 모르겠다면 (32비트, 64비트) 위 사진에서 가장 정확이라고 표시된 맨 위에 혼자 있는 치트엔진을 실행시키면 됩니다. (그냥 Cheat Engine 이라고 적힌것)

* 또 32비트 컴퓨터를 사용중이시면 32비트 버전으로만 실행하면 됩니다.

 

 

치트엔진 사용법 간단하게 알아보기

Cheat Engine (64-bit) 을 실행하면 다음과 같은 화면을 만나보실 수 있습니다.

사실 치트엔진이라는 도구 자체가 어렵게 들어가면 어렵고, 쉽게 들어가면 쉽습니다.

일반적으로 싱글 게임에서 돈 값 정도를 바꾸는건 비전공자 분들도 충분히 쉽게 하실 수 있습니다.

 

이전글을 잘 읽고 오셨다면 아시겠지만, 현대 컴퓨터 구조에서 의해 모든 프로그램은 HDD/SSD 와 같은 저장 장치에서 잠들어 있다가, 더블 클릭하면 반드시 메모리(RAM) 위에서 실행되게 됩니다.

다양한 프로그램은 RAM위에서 실행되며 RAM에다가 자신 프로그램의 데이터 정보를 기록하게 됩니다. 

(물론 프로그램이 HDD/SSD 에 정보를 기록할 수도 있으나 실행중에 빨리 빨리 읽어내야 하는 값들은 대부분 RAM에 저장해 사용합니다.)

 

치트엔진은 이 RAM에 접근해서 프로그램이 저장하고 있는 데이터를 바꿀 수 있는 도구라고 했습니다.

 

다만 이 치트엔진을 연습한다는 것이 어떤 프로그램이 RAM에 저장하고 있는 데이터를 마음대로 조작하는 행위기 때문에, 이걸 어디서 연습한다는 것이 참 애매해지게 됩니다.

보안 분야가 다 그런데 내가 연습하려는게 해킹의 영역이니깐, 이걸 온라인 게임에서 연습하면 법에 저촉되거나 영구 정지를 당할 수 있습니다.

 

치트엔진 제작자도 이를 알았는지, 치트엔진으로 해킹을 연습해보라고 따로 프로그램을 만들어 두었는데 아까 전에 보셨듯이 치트엔진을 설치할 때 같이 딸려온 Cheat Engine tutorial 이라는 프로그램입니다.

 

이 프로그램에서 치트엔진으로 메모리 수정 연습을 할 수 있습니다.

 

Cheat Engine tutorial (64-bit) 을 실행합니다.

실행하면 다음과 같은 창을 볼 수 있습니다.

 

위 영어 문구는 다음과 같습니다.

(직접 번역한 것이므로 의역 또는 오역이 있을 수 있습니다)

치트 엔진 튜토리얼 시작(v3.6)

이 튜토리얼은 게임 치트의 기본을 가르쳐 줍니다. 또한 치트 엔진(줄여서 CE라고도 함) 사용의 기본적인 모습도 볼 수 있습니다. 시작하려면 아래 단계를 따르십시오.

1: 치트 엔진이 켜져 있지 않은 경우 치트엔진을 켭니다.
2: "프로세스 열기" 아이콘("파일" 아래에 있는 컴퓨터 모양으로 되어 있는 왼쪽 상단 아이콘)을 클릭합니다.
3: 이제 프로세스 목록 창이 열리고, 목록에서 이 튜토리얼 프로그램의 프로세스를 찾습니다. "00001F98-Tutorial-x86_64.exe" 또는 "0000047C-Tutorial-i386.exe"와 같은 형식으로 표시됩니다(처음 8개의 숫자/문자는 다를 수 있습니다)
4: 프로세스를 찾았으면 해당 프로세스를 클릭하여 선택한 다음 "열기" 버튼을 클릭합니다. (지금 당장 다른 모든 버튼에 대해 걱정하지 마십시오.). 관심이 있으시면 나중에 자세히 알아볼 수 있습니다.)

축하해요! 모든 작업을 올바르게 수행한 경우 Cheat Engine이 자습서에 Attach(부착)된 상태에서 프로세스 목록 창이 사라져야 합니다(CE의 상단 중앙에 프로세스 이름이 표시됨).

계속하려면 아래의 "다음" 단추를 클릭하거나, 암호를 입력하고 "확인" 단추를 클릭하여 해당 단계를 진행하십시오.)

문제가 있는 경우 forum.cheatengine.org 으로 이동한 다음 "튜토리얼"을 클릭하여 초보자에게 친숙한 가이드를 확인하십시오!

 

사실 위 설명을 잘 읽어보면 충분합니다만.. 일단은 번역투기도 하고 해서 설명대로 따라해보도록 합시다!

 

치트엔진 프로세스 Attach 하기

현재 저희가 해볼 것은 치트엔진을 이용해서, 치트엔진 튜토리얼 프로그램의 메모리값을 마음대로 조작하는 행위입니다.

 

치트엔진이라는 프로그램 자체가 메모리(RAM) 값을 조작하는 프로그램이기 때문에 치트엔진이 어떤 프로세스(실행중인 프로그램) 의 메모리를 읽어서 바꿀지 정해줘야 합니다.

 

우리는 Cheat Engine Tutorial 프로그램을 실행시켰고, 실행중이기 때문에 Cheat Engine Tutorial 역시 프로세스 입니다 그렇죠? 실행중인 프로그램을 프로세스라고 하니깐요.

 

결론적으로 치트엔진이 Cheat Engine Tutorial 프로세스의 메모리를 검색해 조작할 수 있도록 해야하며, 이처럼 치트엔진으로 어떤 프로그램을 선택해 불러오는 행위를 Attach 라고 표현합니다.

 

Attach는 영어 뜻으로 부착한다는 뜻인데, 치트엔진으로 어떤 프로그램을 불러와 (치트엔진을 어떤 프로그램에 부착해), 즉 Attach 해서 그 프로세스의 메모리 값을 읽게 됩니다.[각주*일반적으로 Attach라고 하면 실행 중인 프로세서를 디버거로 불러오는 걸 의미합니다. 프로세스에 연결한다는 뜻입니다. 출처*]

 

치트엔진을 보시면 알겠다 싶이 아직 아무 프로세스도 불러오지 않았으므로 No Process Selected 가 표시됩니다. 치트엔진으로 프로세스를 열기 위해선 왼쪽 위에 컴퓨터 모양 아이콘을 눌러주시면 됩니다.

 

그러면 이런 프로세스 선택 창이 나옵니다. 위에 탭을 보시면 Applications, Processes, Windows 3가지 형태의 탭이 보이실겁니다.

 

Applications 나 Windows는 일반적으로 윈도우 이름이나 어플리케이션 이름으로 찾는 형태고, Processes 는 프로세스 명(*.exe) 으로 찾는 방법입니다.

 

사실은 다 거기서 거기입니다. 웬만하면 저 3개 탭중에 어디서나 프로세스를 찾아낼 수 있습니다. 저는 Processes 명으로 치트엔진 튜토리얼 프로세스를 찾아보겠습니다.

 

치트엔진 튜토리얼 프로그램의 경우 "Tutorial-x86_64.exe" 이기 때문에 프로세스 명 역시 이와 동일할 것입니다.

현재 실행중인 프로세스가 너무 많기 때문에 한번에 찾기가 힘듭니다. 그럴땐 프로세스 목록중에 아무거나 클릭해서 선택하시고

 

바로 "tutorial" 이라고 키보드로 타이핑 해주시면 이렇게 프로세스 명을 검색 할 수 있습니다.

저 Tutorial-.. 이 바로 우리가 치트엔진으로 조작해낼 치트엔진 튜토리얼 프로세스가 되겠습니다.

찾았으면 Open을 눌러서 프로세스를 열어줍니다. 아까 배운 용어로는 프로세스를 Attach 한다고도 표현할 수 있겠군요.

 

제대로 Open이 성공했다면 위에 열린 프로세스 명이 표시되고, 오른쪽에 메모리 검색 도구가 활성화 됩니다.

축하합니다. 이제 치트엔진으로 메모리 값을 조작할 수 있게 되었습니다!!

 

참고로 우리는 치트엔진으로 실행중인 프로그램을 매번 잡아내서 메모리를 검색하는 형태기 때문에, 실행중인 프로그램을 종료했다면 치트엔진으로 다시 새로운 프로세스를 선택해야 합니다. 

 

치트엔진 #2 문제 풀이

치트엔진 튜토리얼 초기 창에서 Next 창을 누르면 이제부터 치트엔진으로 첫 번째 튜토리얼 문제를 풀 수 있습니다.

Step1 부터 시작해야 맞을 거 같은데.. 아까 초기창을 Step1으로 쳐서 본격적인 문제는 Step 2부터 시작인가 봅니다.

 

2단계: 정확한 값 스캔(PW=090453)
이제 치트 엔진으로 튜토리얼 프로그램을 열었으므로 다음 단계로 넘어갑시다.

이 창 하단에 Health: xxx라는 텍스트가 표시됩니다
'Hit me'를 클릭할 때마다 체력이 떨어집니다.

다음 단계로 이동하려면 이 값을 찾아 1000으로 변경해야 합니다

값을 찾는 방법은 여러 가지가 있지만 가장 쉬운 'Exact Value'에 대해 말씀드리겠습니다:
먼저 값 유형이 2바이트 또는 4바이트 이상으로 설정되어 있는지 확인합니다. 1바이트도 작동하지만 주소를 찾아서 변경하려는 경우에는 쉽게 해결할 수 있는 문제가 발생합니다. 주소 뒤의 바이트가 0이면 8바이트가 작동할 수 있지만, 저는 도박을 하지 않을 것입니다.
Single, Double 및 기타 검색은 다른 방식으로 값을 저장하기 때문에 작동하지 않습니다.

값 유형이 올바르게 설정된 경우 스캔 유형이 'Exact Value'로 설정되었는지 확인하십시오
그런 다음 값 상자에 건강 상태 번호를 입력합니다. '첫 번째 스캔'을 클릭합니다
잠시 후(매우 느린 PC의 경우) 스캔이 완료되고 결과가 왼쪽 목록에 표시됩니다.

두 개 이상의 주소를 찾았는데 어느 주소인지 확실히 모를 경우 'Hit me'를 클릭하고 값 상자에 새 상태 값을 입력한 다음 'Next Scan'을 클릭합니다
확실히 찾을 때까지 반복합니다. (목록에 주소가 하나뿐이라는 것도 포함됩니다...)

이제 왼쪽 목록에서 주소를 두 번 클릭합니다. 이렇게 하면 하단의 목록에 주소가 팝업되어 현재 값이 표시됩니다.
값을 두 번 클릭하거나(또는 선택하고 Enter 키를 누릅니다), 값을 1000으로 변경합니다.

모든 것이 정상적으로 진행되면 Next(다음) 버튼이 활성화되고 다음 단계를 수행할 준비가 됩니다.


참고:
검색하는 동안 잘못된 작업을 수행한 경우 "새 검색"을 클릭하고 다시 검색을 반복합니다.
또한, 값을 가지고 놀고 'Hit me'를 클릭합니다.

 

문제 내용을 요약하자면, 현재 치트엔진 튜토리얼에서 체력값(Health) 이 100으로 지정되어 있고, Hit me를 누르면 체력이 깎이는데 이 체력을 한 번 1000으로 바꿔봐라~ 가 되겠습니다.

 

앞에서 입이 닳도록 설명드렸듯이 모든 프로그램은 RAM위에서 실행되며, 프로세스는 RAM에 값을 저장합니다.

치트엔진 튜토리얼 프로세스 역시 다양한 값을 RAM위에 저장하고 있을탠데, Health 값 역시 RAM어딘가에 저장하고 있을 것 입니다!

 

치트엔진으로 이 Health 값을 메모리(RAM)에서 잘 찾아내서 1000으로 바꾸면 됩니다.

 

현재 Health 값은 100이며, 이 값은 수학적으로 정수(integer) 입니다.

치트엔진으로 우리는 "정확히" 100인 정수값을 찾아보면 됩니다.

정확한 값을 찾으려면 Scan Type(검색 타입)을 Exact Value(정확한 값) 으로 맞추면 되고,

Value Type은 4 Bytes 또는 8 Bytes로 맞추면 됩니다. [각주*치트엔진에서 Byte가 붙은 것이 일반적으로 정수를 찾아내는 것이고, Float 와 Double이 실수(소수) 를 찾아내는 데 사용합니다.*]

 

 

4 Bytes는 보통  -21억 ~ 21억 사이의 값을 의미하며 (이진법에서 4바이트로 표현 가능한 수가 이렇습니다)

8 Bytes는 4 Bytes의 한계를 넘어서 아주 아주 큰 값을 담아낼 수 있습니다.

* 아마 C언어를 배우신 분들이라면 자료형(Data Type) 이라는 개념으로 이 바이트 표현에 대해 알고 계실겁니다.

 

어쨌던 간에 Health 값을 담는데 8 Bytes 같은 큰 자료형은 썼을 거 같지 않으니깐요 4 Bytes로 검색을 해보겠습니다.

 

사진처럼 설정하고 First Scan을 눌러서 첫 스캔을 시도해봅시다.

 

보시다 싶이 메모리에서 100이라는 값이 저장된 주소들이 많이 나옵니다.

왼쪽 위를 보시면 알겠지만 59개가 나왔는데요.

아직은 이 중에서 Health 값이 어떤 건지 정확히 알 순 없습니다.

 

왜냐면 프로그램 내부에서 어떤 이유로든 100이라는 값을 저장해둬야 했을 수 있으니깐요.

여기에 있는 값 중에 Health 값이 아닌데 찾아내서 마구잡이로 바꾸어 버리면 프로그램이 튕기거나 깨질 수 있으니 주의 해야 합니다.

 

치트엔진 튜토리얼로 이동해 Hit me를 클릭해 Health를 96으로 떨어뜨립니다.

 

아까 100으로 찾아놓은 값들 중에서 96으로 바뀐 값이 있는지 찾아봐야 합니다. 오른쪽 위에 96을 입력하고 Next Scan을 누릅니다. 

 

100을 가지는 값들 중에서 96으로 바뀐 값은 딱 하나 밖에 없네요. 메모리 주소 001147A8 에 저장된 값이 바로 Health 값 인 거 같습니다.

 

혹시 모르니 튜토리얼 프로그램에서 Hit me를 한 번 더 눌러봅니다.

 

치트엔진 화면을 보니 여기 값이 체력 값이 맞는 거 같습니다. 보시다 싶이 값이 빨간색으로 변해서 96에서 94로 바뀌었다고 알려줍니다. * 치트엔진에서는 찾아 놓은 값들 중에 바뀐 값이 있으면 이렇게 빨간색으로 표시해줍니다.

 

찾아 놓은 값을 수정하기 위해선 치트엔진에 메모리 주소값을 등록해야 합니다. 찾아놓은 값을 더블클릭 하거나, 또는 오른쪽 클릭 - Add selected addresses to the addresslist 를 눌러서 아래 Table에 메모리 주소값을 등록합시다.

 

아래를 보시면 알다 싶이 001147A8 주소의 메모리 값이 Table에 등록되었습니다.

지금 Value가 94인데, 이 Health 값을 1000으로 바꿔봅시다.

 

등록해둔 값을 더블클릭 하고 새로운 창이 나오면 값을 94에서 1000으로 변경해줍니다.

 

Health 값을 정상적으로 1000으로 변경시켰습니다.

 

튜토리얼 프로그램에 오면 변동사항이 없는거 같지만.. 값이 바뀐걸 튜토리얼 프로그램이 바로 Health에 출력하지 않아서 그렇습니다. 실제로는 1000으로 변경되었습니다.

 

확인하기 위해서 Hit me로 Health에 변동을 주면..!

 

보시다 싶이 체력이 1000에서 998로 깎인걸 알 수 있습니다.

밑에 Next가 활성화 됐는데 튜토리얼을 성공적으로 클리어 하셨다는 겁니다.

따라오신 분들 축하드립니다!

 

다음 편에선 튜토리얼 #2 풀이로 뵙겠습니다. 기초적인 내용은 여기와 앞의 개요 편에서 다 설명했으므로 뒤부턴 자세한 설명은 생략하고 간략히 문제 풀이에 집중해보도록 하겠습니다. 감사합니다.

SNS 공유하기
💬 댓글 개
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.