안경잡이개발자

728x90
반응형

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

나동빈


  이번 시간은 치트 엔진 튜토리얼 9단계 문제를 풀어보는 시간을 가집니다. 튜토리얼 문제 중 마지막 문제이며 지금까지 공부한 내용들을 혼합해서 문제를 풀어야 합니다. 사실 난이도는 그다지 높지 않습니다.


  문제 요약: Player 1과 Player 2가 우리 팀이고, Player 3와 Player 4가 적 팀입니다. 게임을 시작하면 각 플레이어의 체력이 감소하는데, 치트 엔진을 이용하여 우리 팀이 이기도록 처리하면 됩니다.



  바로 먼저 Player 1: Dave의 체력 데이터 변수를 찾기 위해 다음과 같이 100을 검색합니다.



  결과적으로 다음과 같이 변수를 찾을 수 있으며 이를 주소 리스트에 추가합니다.




  기본적으로 해당 변수의 값을 감소시키는 기계어를 찾기 위해 다음과 같이 Find out what writes to this address 버튼을 누릅니다.



'


  체력을 감소시키자 다음과 같이 하나의 명령어가 검출되었습니다. 쉽게 말해 체력 정보를 감소시키는 명령어입니다.



  기계어는 mov [ebx + 04], eax입니다. 리버싱(Reversing)을 많이 해보면 이 명령어를 보자마자 배열(Array)를 떠올릴 수 있습니다. 일반적으로 플레이어와 같은 정보들은 C언어에서 구조체 형태로 저장됩니다. 결과적으로 플레이어가 여러 명이니까 플레이어 구조체가 배열 형태로 선언이 되었을 것이라고 예상할 수 있습니다. 여기에서 ebx는 일반적으로 배열의 인덱스를 위해 사용되는 변수라고 볼 수 있습니다.


  따라서 해당 구조체 변수가 선언된 메모리 공간을 확인하기 위해 Browse this memory region을 누릅니다.



  그러면 다음과 같이 하나의 구조체 안에는 체력 데이터 및 플레이어 이름 정보 등의 변수가 차례대로 담겨있는 것을 확인할 수 있습니다.



  따라서 다음과 같이 ebx 레지스터의 값을 확인해 봅시다.



  이 ebx 레지스터는 배열에서 특정한 원소 부분이 시작되는 메모리 주소를 저장한다고 예측할 수 있습니다.


  이제 우리는 각 플레이어의 점수를 서로 다르게 처리하기 위해서 플레이어를 구분하는 로직을 작성해야 합니다. 확인해 보시면 ebx 레지스터에서 조금만 더 가면 이름 데이터가 존재하는 것을 파악할 수 있습니다.




  오프셋(Offset)을 확인해보니 정확히 ebx + 15의 위치에 이름 데이터의 첫 번째 글자가 나오는 것을 확인할 수 있습니다.



  따라서 구조체 변수 내 체력 정보를 변경하는 기계어를 수정하기 위해 어셈블리어를 확인해 줍니다.



  Auto Assemble 탭을 클릭하여 코드 인젝션을 수행 할 수 있도록 합니다.




  코드를 다음과 같이 바꾸어줍니다. CMP와 JE는 함께 자주 쓰이는 어셈블리어입니다.


  CMP: 두 개의 데이터를 비교하여 그 결과를 저장합니다.

  JE: 두 데이터의 값이 일치하는 경우 특정 주소로 이동합니다.


  다시 말해 특정한 구조체 변수의 이름 데이터 값이 'D'로 시작하는 경우는 체력 데이터를 감소시키지 않고 바로 로직이 종료되도록 만드는 것입니다.




  이제 플레이어 Dave는 체력이 감소되지 않습니다. 따라서 다시 게임을 시작해보면 Dave의 팀이 승리하는 것을 알 수 있습니다. 이와 같이 간단히 치트 엔진 튜토리얼의 마지막 문제까지 풀어보았습니다.



728x90
반응형

Comment +0

728x90
반응형

  Pwn Adventure 3게임 해킹(Game Hacking) 공부를 목표로 하여 만들어진 게임입니다. 일종의 MMORPG 게임인데, 이 게임에서는 모든 것을 해 볼 수 있습니다. 이 게임은 간단한 형태의 매우 많은 취약점을 내장하고 있다는 점에서 하늘 날기(Flying), 돈 버그(Endless Cash), 이외에도 클라이언트 데이터 변조 혹은 네트워크 해킹이 가능합니다.


  물론 이러한 게임 해킹 과정을 통해서 단순히 게임을 불법적으로 즐기는 것이 아니라, 취약점을 찾아서 게임을 개발한 사람에게 알려주겠다는 착한 마인드로 공부를 하셔야 됩니다. 이 게임은 개발자가 놓치기 쉬운 부분들을 누락시켜서, 고의적으로 문제가 있도록 개발이 되어있습니다. 그래서 엔진 자체를 해킹하려는 시도보다는 이 게임을 면밀히 분석해서 해킹하는게 좋습니다.


  ▶ 공식 웹 주소: http://www.pwnadventure.com



  사이트에 접속하면 바로 게임을 다운로드 해볼 수 있습니다.



  자신의 운영체제에 맞게 다운로드를 진행해주세요.



  압축 파일을 압축 해제 해보시면 위와 같이 설치 프로그램이 존재합니다. 이를 실행해서 설치를 진행해봅시다.



  설치를 위해서 외국 서버로부터 데이터를 받아오는데, 외국 서버가 생각보다 많이 느려서 기다리실 필요가 있습니다.



  설치가 완료되면 'Play' 버튼을 눌러서 게임을 시작할 수 있습니다.



  아직 우리는 서버를 설정하지 않았기 때문에 오프라인 플레이(Offline Play)를 눌러봅시다.



  그러면 위와 같이 캐릭터를 선택하여 생성할 수 있습니다.



  간단하게 게임을 실행해보면서 대략적인 게임 방법에 대해 알아보는 시간을 가지시면 됩니다.

728x90
반응형

Comment +0