활용한 강좌: https://www.youtube.com/playlist?list=PLRx0vPvlEmdB8ky_3GDyRFeARmOD2O6ub
Tutorial 1
문제: 분석할 프로그램을 분석 도구에서 열어보기
1. 치트 엔진 분석도구에서 왼쪽 위의 아이콘을 눌러 분석할 프로그램을 선택하여 open한다.
2. 분석하고자 하는 파일이 열렸다는 것을 확인할 수 있다.
3. Password: 090453
Tutorial 2
문제: 게임 메모리 내 특정 값(Health)을 1000으로 변경하기
1. 현재 Health의 Value가 100이기 때문에 분석 도구 내 Value에 100을 입력하고 First Scan 버튼을 클릭한다.
1-2. Value가 100인 값들이 매우 많다.
2. 프로그램 내에서 Hit me 버튼을 클릭해 Value값을 변경시킨 후 다시 주소 리스트를 보면 값이 바뀐 주소(0198B088)를 확인할 수 있다.
2-2. Value를 프로그램 내에서 바뀐 값으로 변경한 후(97) Next Scan 버튼을 누르면 딱 그 Value의 메모리 주소만 리스트에 뜨는 것 같다.(사진의 경우 여러번 시도해서 최종적으로 90으로 변경 후 Next Scan했음)
3. 메모리 주소를 더블클릭하면 아래에 자세한 정보들을 볼 수 있는데 Value값을 더블클릭하여 원하는 값으로 수정할 수 있다.
4. 프로그램으로 돌아가면 프로그램 내부적으로 Value가 1000이 되었기 때문에 Next 버튼이 해금되어 누를 수 있게 된다.
5. Password: 419482
Tutorial 3
문제: 게임 메모리 내 특정 값(Health)을 5000으로 변경하기(이전 문제와 같은데 Health를 알 수 없음. 단, Health는 0-500 사이)
1. 우선 우리가 아는 값이 없기 때문에 Scan Type을 ‘Unknown initial value’라고 지정한 후 First Scan을 누르면 (당연히) 엄청난 수의 address list가 뜬다.
2. 이후 프로그램에서 Hit me 버튼을 눌러 체력을 감소시킨 후(-1) Scan Type을 ‘Decreased value by ...’로 지정하고 Value에는 1을 넣어 Next Scan 버튼을 누른다. address list가 많이 좁혀졌다. 확실한 address를 찾을 때까지 이러한 작업을 반복해준다.
3. 0~500 사이에서 반복적으로 줄어드는 Value를 찾아 유력한 address를 찾았고 값을 5000으로 바꾸어주었다.
4. Next 버튼이 해금되었다. Password: 890124
Tutorial 4
문제: Health와 Ammo 값을 5000으로 설정하기(찾아낼 데이터가 실수형인 문제)
1. 일단 float형인 Health의 value를 찾기 위해서 Value Type을 ‘Float’로 설정해주고 Value에 100을 입력해 First Scan한다. 운 좋게 해당 address를 바로 확인할 수 있었다. 더블클릭하여 아래에 추가해준다.
2. New Scan을 누른 후, Ammo의 value를 찾기 위해서 Value Type을 ‘Double’로 설정해주고 Value에 100을 입력해 First Scan한다. 이번에도 운좋게 해당 address를 바로 확인할 수 있었다. 마찬가지로 더블클릭하여 아래에 추가한다. 만약 여러 address list가 뜬다면 프로그램을 실행해 값을 변경해주어 Value가 이벤트에 맞춰 바뀌는 address를 찾으면 된다.
3. 이제 두 값을 5000으로 바꾸어주면 Next 버튼 해금 성공! Password: 888899
Tutorial 5
문제: Change value 버튼이 기능하지 못하도록 조작하기(어떤 부분이 버튼을 작동시키는 주소인지 기계어 코드를 찾아내는 것이 관건)
1. 일반적으로 C언어로 만든 프로그램들은 int형(4byte)을 많이 사용하므로 Value Type을 ‘4 Bytes’로 설정하는 게 편하다. Value는 프로그램에 나왔듯 100을 입력하고 Fisrt Scan하면 많은 address list를 볼 수 있다. 그럴 땐 프로그램에서 Change value 버튼을 눌러 어느 address가 변하는지 확인하여 원하는 address를 찾을 수 있다. 찾았다면 더블클릭하여 아래에 추가한다.
2. 해당 메모리(018A4300)를 Change value 버튼이 참조하기 때문에 우클릭 후 ‘Find out what writes to this address’를 눌러 실제적으로 어떤 기능이 이 주소에 접근하는지 확인한다. 프로그램을 실행해 다시 메모리의 값을 변경시키도록 동작한 후 다시 분석도구로 돌아오면 어떤 기계어가 해당 메모리의 값을 바꾸는지 확인할 수 있다.
3. Replace 버튼을 눌러 아무것도 수행하지 못하도록 ‘NOP’라고 입력했다. 이후 오른쪽 아래에 Stop 버튼을 누르고 Close를 눌러 나와준다. 그러면 프로그램을 실행해서 Change value 버튼을 눌러도 값이 변하지 않는다는 것을 볼 수 있다. Next가 활성화되었고 Password는 098712
'4-6. 2022-1 심화 스터디 > 모바일 게임 해킹' 카테고리의 다른 글
[2022.05.14] 치트엔진으로 포켓몬스터 파이어 레드 게임 해킹하기 (0) | 2022.05.14 |
---|---|
[2022.05.07] 치트 엔진(Cheat Engine)을 활용한 게임 해킹 강좌 (0) | 2022.05.14 |
[2022.03.26] 모바일 게임 해킹(Unity편) - Part 2.2 ~ Part 3.2 (0) | 2022.03.27 |
[2022.03.19] 모바일 게임 해킹(Unity편) - Part 0 ~ Part 2.1 (0) | 2022.03.19 |
[2022.03.12] APK 구조 분석 및 decompile&repackaging (0) | 2022.03.13 |