본문으로 바로가기

파일의 IT 블로그

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

[Cheat Engine] 치트엔진 튜토리얼 #0 개요

· 댓글개 · KRFile

이미지 출처 : https://cheat-engine.kr.uptodown.com/windows

안녕하세요 파일입니다. 저번에 올리디버거를 통해 Abex Crackme를 리버싱 하는 글을 5편 정도 작성했었는데요. 이번에 새로 작성해볼 것은 치트엔진 튜토리얼에 관한 글입니다 ㅎㅎ. 정확히는 치트엔진 튜토리얼 풀이 방법에 대한 글입니다. 앞전과 동일하게 치트엔진 튜토리얼의 모든 문제를 최대한 부연 설명과 함께 자세히 풀이해볼 생각입니다.

우선 그러기 전에 앞서! 치트엔진이 어떤 프로그램인지 소개를 드리고자 하는데요~ 아래에서 보시죠.

 

개요

우선 치트엔진이 어떤 프로그램인지 소개해드리기 전에 간단한 컴퓨터 구조에 대한 지식이 필요합니다. 전공자 분들이라면 대부분 아시는 내용일 것이라 아는 내용이면 PASS 하시기 바랍니다. 또 치트엔진에 대한 글을 쓰는게 목적이라 그렇게까지 자세히 설명하진 않습니다.

 


우리가 프로그램 실행을 위해 HDD나 SSD 같은 저장장치에 저장되어 있는 실행 파일(*.exe) 을 더블 클릭해서 실행하면, OS(운영체제) 가 RAM(흔히 메모리라고 함) 에 우리가 실행한 파일을 불러와서 적재하게 되고, CPU는 이제 RAM에서 프로그램의 코드를 읽어와 프로그램이 실행되게 됩니다.

 

일반적으로 메모리라고 하면 주로 '메인 메모리', 즉 주기억 장치인 RAM을 의미합니다. 앞으로 글에서 메모리나 RAM이라는 용어를 혼용해서 사용해도 근본적으로 RAM(DRAM)을 나타내는 거라고 이해하시면 됩니다. 
출처 - 
https://blog.naver.com/hope5872/221852325167

 

기본적으로 HDD/SSD에 잠들어서 실행되지 않고 실행을 기다리고 있는 실행 파일(*.exe)을 보통 "프로그램" 이라고 하고 

이 프로그램을 우리가 더블클릭을 통해 실행시키면, OS에 의해 RAM위로 올라와서 프로그램이 실행되게 되는데 이렇게 생명을 얻어 실행된 프로그램을 "프로세스" 라고 합니다.

 

프로그램 : HDD/SSD 에 저장된 생명이 없는 실행 파일(*.exe)

프로세스 : RAM위로 올라와서 실행중인 프로그램 (생명이 있음)

 

이걸 왜 설명하냐..? 하면 어쨌던 간에 우리가 실행 파일을 실행하게 되면, RAM위로 올라와서 프로세스가 되어 실행되게 되고, 컴퓨터 구조에 의해 결론적으로 우리가 켜는 모든 프로그램들은 RAM(메모리) 위에서 놀게 된다는 겁니다.

 

그리고 추가적으로 프로세스들은 자신의 RAM 공간을 4GB 크기 정도씩 할당받아 사용하게 됩니다. 만약에 메모장을 켜게 되면, OS가 메모장을 위해 RAM에서 4GB 정도의 공간을 할당해서 줍니다. 메모장은 그 4GB로 되어있는 "자신의 방"에서 프로그램 실행시 필요한 정보를 기록해 두게 됩니다. 

 

메모장이 실행중에 필요한 정보는 무엇일까요? 바로 사용자가 입력한 정보라던가, 사용자가 연 파일의 이름등이 될 것입니다.

 

* 정확히는 가상메모리가 할당되는거긴 한데 일단은 대강 대강만 이해해봅시다. 전공 수업은 아니니깐요.. 영어 내용은 무시하고 프로세스당 가상메모리 4GB가 할당된다 정도만 그림에서 확인하면 됩니다.

 

메모장이 잘 와닿지 않는다면 다른 예시를 들어볼까요? 어떤 게임 파일(Game.exe)을 실행하면 게임 프로세스가 RAM위에서 실행되게 될 것이고, 게임 프로세스는 RAM에다가 캐릭터의 체력, 공격력, 방어력 등을 저장해 둘 겁니다.

 

그러면 만약에 내 캐릭터를 무적으로 만들고 싶다면..? 게임 프로세스 역시 RAM의 4GB 공간 정도를 할당받아서 RAM에 HP를 기록해두고 있을건데요. 그 메모리 값(HP 값)을 찾아서 1억과 같이 엄청 큰 값으로 만들어두면 내 캐릭터가 무적이 될 겁니다.

 

물론 서버와 연동되지 않고 데이터를 본인 컴퓨터에 저장해놓는 싱글 게임에 한해서만 가능합니다. 일반적으로 온라인 게임들은 값들을 클라이언트쪽에 두지 않고 서버와 동기화 하면서 진행하기 때문에, 클라이언트 쪽에서 값을 바꿔도 서버에서 값을 계속 얻어오기 때문에 값을 변조해낼 수 없습니다. [또 서버와 대조하는 과정에서 클라이언트 쪽에만 이상하게 값이 바뀌면 해킹을 감지하고 게임 계정이 정지될 수 있습니다.]  물론 그럼에도 모든 프로세스는 RAM위에서 돌아가는 특성 덕에, 어떻게 해서든 클라이언트 쪽[우리의 PC, RAM]에만 저장되는 게임의 중요값을 찾아 파고들어서 변조하는게 게임 해킹의 기본 원리입니다.

 

OS의 보안 정책상 한 프로세스는 다른 프로세스의 메모리 공간에 [**합법적**]으로 접근이 불가합니다. 이런걸 허용해버리면 해커가 C언어 같은걸로 프로그램을 만들어서 우리 크롬 프로세스의 비밀번호나 개인 정보 값을 탈취할 수 있을거니깐요 ^^;;

 

하지만 치트엔진을 사용하면 이게 가능합니다.

치트엔진을 사용하면 실행중인 프로세스의 메모리(RAM) 값을 읽을 수도 있고 쓸 수도 있습니다. 심지어 메모리를 읽고 쓸뿐만 아니라 어떤 CPU 명령어가 그 값에 개입해서 실행되고 있는지 볼 수도있고 디버깅도 할 수 있습니다.

 

그래서 치트엔진이 게임핵계에서 아주 간단하면서 강력한 도구로 불리우는 이유입니다. 초등학생도 쓸 수 있는 수준의 사용법으로 프로세스의 RAM 값을 쉽게 바꿀 수 있으니깐요 ㅎㅎ.

 

Cheat Engine

아까도 말했듯이 치트엔진은 프로세스의 메모리(RAM) 값을 변조할 수 있는 도구입니다.

기본적으로 오픈소스라 발전 속도도 빠르고 매우 다양한 기능을 지원합니다.

메모리 스캔속도도 엄청나게 빠른게 또 장점이구요.

 

이미지 출처 : https://blog.naver.com/PostView.naver?blogId=nightflower-9&logNo=40102094253&parentCategoryNo=&categoryNo=19&viewDate=&isShowPopularPosts=true&from=search

 

예전에 유행 하던 프로그램 중에 이런 프로그램이 있었는데요.. 바로 치트 오매틱이라는 프로그램입니다. 치트엔진이랑 사실 이 프로그램은 원리가 같습니다. 메모리 값을 스캔해서 값을 바꾸는 것이죠. 물론 이건 메모리 검색과 변경 등만 지원하는 아주 간단한 프로그램인데, 여기서 발전하여 디버깅, 어셈블리어 분석, 스피드핵 등 다양한 기능을 지원하는 프로그램이 바로 치트엔진 입니다.

 

치트 오매틱으로 컴교실에서 금붕어 키우기 돈 무한 치트 썼었는데 추억이네요

 

어쨌던 간에 이 치트엔진에 대한 사용법을 익히는데 도움을 주기 위해 치트엔진 제작자가 치트엔진 안에다가 "치트엔진 튜토리얼" 이라고 따로 만들어놓은 프로그램이 있는데, 이걸 통해서 치트엔진 사용법을 익혀볼겁니다.

튜토리얼엔 8~9 문제 정도가 있는데 뒤로 갈수록 몇가지 어려운 문제가 존재해서 이를 위해 풀이를 제공해보고자 합니다. 그럼 다음 편에서 치트엔진 튜토리얼 실행 방법 및 문제 풀이를 진행해봅시다~

 

 

출처

https://blog.naver.com/hope5872/221852325167

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=duehd88&logNo=20183434063 

 

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

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