본문 바로가기

4-6. 2022-1 심화 스터디/모바일 게임 해킹

[2022.05.14] 치트엔진으로 포켓몬스터 파이어 레드 게임 해킹하기

① - 강의 개요 및 게임 실행

  • VisualBoyAdvance(에뮬레이터): 옛날 게임을 현대 컴퓨터에서 구동시키기 위한 가상환경 도구로 오픈소스로 관리되고 있다. 
  • VisualBoyAdvance 프로그램을 실행하고 그 안에 분석할 게임을 드래그한다.
  • 기본적으로 space bar를 누르면 게임을 빠른 속도로 실행할 수 있다.
1. VisualBoyAdvance  프로그램 실행 
2. 파일 열기를 클릭하기 

 
3. 포켓몬 파이어 레드 열기
 
4. 게임 실행 

 

② - 포켓몬 경험치 및 레벨 조작하기

치트엔진을 이용하여 몬스터와의 결투 후 경험치 변화를 확인한 뒤 관련된 변수의 value를 조작하여 레벨 조작을 시도한다. 

1.  전투에서 승리하여 23 exp를 획득하였다. 

2. 치트엔진에서 23라는 value를 가진 변수를 찾아본 뒤 한 번 더 전투를 진행하여 변화된 값을 또 가지는 변수를 찾는다. 

3. 이렇게 나온 변수를 주소 리스트에 등록시킨다. 

4. 주소 리스트에 등록된 변수들의 value를 조작해준 뒤 다시 게임을 실행해보면 조작된 경험치 값으로 레벨이 오른다. 

(주소 리스트에 변수가 여러 개 등록해야 하는 경우, 게임 실행 후 하나의 변수의 value 값만 변화하는 것을 포착 가능)

+) 변수 상태를 active한 뒤 게임을 실행하면 레벨업 해도 value 값의 변화가 없어지고 무한대로 레벨업 가능

③ - 포켓몬 능력치 조작하기

능력치값이 증가하는 순간은 레벨업을 할 때 이기 때문에 레벨이 오르는 순간을 치트 엔진을 통해 분석하여 해당하는 변수 값조작 시도한다. 

1. 전투에서 얻은  경험치 값을 치트 엔진에 입력하여 해당하는 변수를 찾는다 ( ② 처럼 ) 

2. 레벨업시 HP 값이 변화하게 되는데 이때도 치트엔진을 이용해 해당하는 변수를 주소리스트에 등록한 valued을 조작한 뒤 active시킨다. (같은 방식으로 다른 능력치 조작 가능) 

④ - 상점 구매 가격 조작하기

상점에서 팔고 있는 아이템의 가격을 치트엔진에 입력한 뒤 구매 개수를 늘려 해당 아이템의 변화되는 총 가격을 보여주는 변수를 찾아 주소 리스트에 등록하여 value를 0으로 바꾼 뒤 active 시키면 구매를 항상 0원에 할 수 있게 조작한다.

 1. 상품이 1개 일 때 가격이 200이니 치트엔진이 200 입력한 뒤 scan하고 개수를 8개로 변경한 뒤 1600 입력 후 scan 

2. 해당하는 변수의 value를 0으로 변경한 뒤 active 시킨 후 아이템 구매를 시도하면 0원에 항상 구매 가능하다