안경잡이개발자

728x90
반응형

치트 엔진(Cheat Engine) 튜토리얼(Tutorial) 2단계

나동빈


  이번 시간은 치트 엔진 튜토리얼의 2단계입니다. 사실 2단계는 정말 쉽지만 가장 많이 사용되는 기능에 대해서 물어보는 것입니다. 바로 컴퓨터 메모리 내의 특정 변수의 값을 변경하는 것입니다. 실제로 우리가 게임 소프트웨어를 실행하여 게임을 하면 체력(Health) 정보 등은 모두 메모리에 저장됩니다. 이 때 치트 엔진을 활용하면 동적 분석을 진행하면서 그러한 변수의 값을 원하는 대로 조작할 수 있습니다.


  2단계 요약: 처음에 100으로 설정이 되어 있는 체력(Health) 값을 1000으로 바꾸기



  기본적으로 2단계를 풀기 전에 치트 엔진에서 Tutorial 프로세스를 열고 있는 상태여야 합니다. 보시면 Health의 값이 100으로 초기화가 되어 있는데 이를 1000으로 바꾸라고 나오는 것을 알 수 있습니다.



  그러면 바로 현재 메모리 내에서 100이라는 값을 가지는 변수를 찾으시면 됩니다. 값(Value)에 100을 넣고 First Scan을 수행합니다.


  이 때 자료형(Value Type)을 지정하여 검색할 수 있습니다. 일반적으로 컴퓨터 프로그래머가 프로그램을 작성할 때는 정수를 4 Byte 변수로 가장 많이 이용합니다. 옛날에 만들어진 프로그램들은 2 Byte짜리도 많이 존재하므로 이를 적절히 고려하여 변수를 찾아내야 합니다.



  그러면 현재 튜토리얼 프로그램 내에서 100이라는 값을 가지는 많은 주소 공간이 나오는 것을 알 수 있습니다. 이 중에서 정확히 체력(Health) 정보를 가지는 주소가 무엇인지 알기 위해서는 어떻게 해야 할까요?



Hit me 버튼을 누르면 체력 값이 변경되는 것을 알 수 있습니다. 즉 100이라는 값을 가지고 있던 상태에서 97로 값이 변경된 것입니다.



  치트 엔진은 동적 분석 도구이므로 이렇게 값이 변경되는 것을 캐치할 수 있습니다. 바로 97을 입력한 뒤에 Next Scan을 눌러봅시다. 그러면 아까 결과로 나왔던 주소 값 중에서 '현재 값이 97인 주소만 추출'이 됩니다.



  위와 같이 주소 017D31C8에 저장되어 있는 값이 97인 것을 확인할 수 있습니다.



  그러면 해당 라인을 더블 클릭하시면 아래 쪽 탭에 해당 정보가 기입되는 것을 알 수 있습니다.



  Value 속성을 더블 클릭하여 값을 1000으로 바꾸어 봅시다.



  그러면 위와 같이 값이 1000으로 변경된 것을 알 수 있습니다.



  값을 변경했을 때 프로그램에 즉시 반영이 되는 경우도 있고, 그렇지 않은 경우도 있습니다. 현재 우리의 프로그램에서는 'Next' 버튼에는 즉시 반영이 되었으나 'Health' 값에는 즉시 반영이 되지는 않은 것 같네요. 따라서 Hit me 버튼을 눌러서 값을 갱신해보시면 쉽게 알 수 있습니다.



  그러면 위와 같이 값이 갱신이 되는 것을 알 수 있습니다. 정확히 1000을 맞추기 위해서는 몇 번의 시도가 더 필요할 수는 있겠네요. 아무튼 이와 같이 간단히 메모리 내의 특정한 변수의 값을 변경하는 방법에 대해 알아보는 시간을 가졌습니다.


※ 알아두면 좋은 상식 ※


  일반적으로 게임은 C언어 및 C++로 가장 많이 작성됩니다. C언어 계열에서는 정수를 나타낼 때 다음과 같은 자료형을 많이 사용합니다.


  Integer: 4 Bytes의 공간을 차지하며 대략 -20억부터 +20억까지의 범위를 표현할 수 있습니다.

  Short: 2 Bytes의 공간을 차지하며 대략 -3만부터 +3만까지의 범위를 표현할 수 있습니다.


  또한 최근에는 유니티(Unity)나 언리얼 등의 게임 엔진을 이용해서 다양한 게임을 개발합니다. 이러한 게임 엔진에서는 실수를 나타내는 Float형 및 Double형도 매우 자주 사용되기 때문에 적절히 변수의 자료형을 고려하여 동적 분석을 수행해야 합니다.


728x90
반응형

728x90
반응형

치트 엔진(Cheat Engine) 튜토리얼(Tutorial) 1단계

나동빈


  치트 엔진 소프트웨어를 설치하면 자동으로 딸려오는 튜토리얼을 함께 풀어보도록 합시다. 가장 먼저 1단계입니다. 튜토리얼 프로그램은 정말 튜토리얼을 목적으로 만들어진 프로그램이므로 큰 부담 없이 튜토리얼에서 요구하는 대로 진행하시면 됩니다.



  튜토리얼 프로그램에서는 위와 같은 메시지가 쓰여 있습니다. 요약하자면 '치트 엔진에서 튜토리얼 프로그램을 열어보기(Open)'입니다. 치트 엔진은 특정한 프로그램을 대상으로 하여 분석을 진행할 수 있도록 도와주는데, 튜토리얼 프로그램도 하나의 프로그램이기 때문에 치트 엔진의 분석 대상이 될 수 있습니다.



  따라서 위와 같이 프로세스 리스트 항목을 열어서 Tutorial 프로세스를 선택하여 열어주시면 됩니다.



  그러면 위와 같이 현재 열려 있는 분석 대상이 Tutorial 프로그램이 된 것을 알 수 있습니다.



  이제 Next 버튼을 눌러서 다음 단계로 넘어가시면 됩니다. 보시면 패스워드(Password)라는 것이 있습니다. 치트 엔진의 튜토리얼 문제들은 각 문제마다 패스워드 값을 가지고 있으므로 나중에 다시 튜토리얼을 실행했을 때 최근까지 풀었던 문제로 바로 이동할 수 있도록 패스워드 값을 제공하는 것입니다.


※ 알아두면 좋은 상식 ※


  프로세스(Process)컴퓨터 내에서 현재 실행중인 프로그램

728x90
반응형

728x90
반응형

치트 엔진(Cheat Engine)의 개요와 설치

나동빈


  치트 엔진(Cheat Engine)시스템 메모리 내의 데이터를 수정할 수 있도록 도와주는 소프트웨어입니다. 프로그램의 디버깅이나 게임 해킹을 함에 있어서 우리에게 간단하지만 매우 강력한 기능을 지원합니다. 최신 버전의 치트 엔진은 공식 웹 사이트에서 다운로드 할 수 있습니다.


  치트 엔진 공식 사이트https://www.cheatengine.org/



  게임은 일반적으로 윈도우 운영체제에서 돌리는 경우가 많다는 점에서 치트 엔진 소프트웨어는 윈도우 버전이 가장 많이 사용되고 있습니다. 웹 사이트에서 Download Cheat Engine 버튼을 누르면 치트 엔진 다운로드가 시작됩니다. 치트 엔진 설치는 다음과 같은 단순한 과정으로 수행할 수 있습니다. 웬만하면 기본 설정에 따라서 다음(Next) 버튼을 눌러 설치를 진행하시면 됩니다.








  (중간에 Avast Free Antivirus 소프트웨어 광고가 붙어 있는데요. 저는 '설치하지 않음'을 선택했습니다.)




  설치가 완료되면 위와 같이 바로 치트 엔진을 구동시킬 수 있도록 합니다.



  치트 엔진을 처음 실행하면 튜토리얼(Tutorial)부터 해보는 것을 강력하게 권장드립니다. 치트 엔진은 매우 잘 만들어진 소프트웨어라서 튜토리얼만 잘 따라오셔도 대부분의 기능을 이용하는데 큰 어려움이 없을 겁니다.



  위와 같이 기본적으로 튜토리얼 창이 뜰 것이구요. 보이지 않는다면 다음과 같이 'Help' - 'Cheat Engine Tutorial'로 들어가서 치트 엔진 튜토리얼 창을 실행할 수 있습니다.



  아무튼 성공적으로 치트 엔진 설치까지 다루어보았습니다. 다음 장에서부터는 치트 엔진의 튜토리얼 문제를 함께 풀어보겠습니다.


※ 알아두면 좋은 상식 ※


  치트 엔진은 기본적으로 자신의 컴퓨터 내에 설치된 게임 프로그램을 해킹하는 도구입니다. 다시 말해 '클라이언트 동적 분석 도구'라고 할 수 있습니다. 최근에는 게임 보안이 많이 향상되어 클라이언트 해킹으로 실 서버에 타격이 가지 않도록 많은 보안 처리가 이루어지고 있습니다. 하지만 과거에는 치트 엔진으로 유명 RPG 게임까지 다수 해킹이 가능하곤 했습니다.

728x90
반응형