개요
치트 엔진(Cheat Engine)은 주로 게임 내에서 값을 조작하거나 게임 내부 동작 로직을 수정하는 데 사용되는 프로그램으로 주 타겟은 PC 게임이다. 물론 모바일 디바이스에도 연결해 사용할 수 있지만, 모바일 쪽은 "Game Guardian"이 꽉 잡고 있어 치트 엔진은 잘 쓰이지 않는다. 그렇다고 치트 엔진이 Game Guardian 보다 성능이 떨어지느냐? 그건 절대 아니다. 오히려 더 정밀한 기능은 치트 엔진이 한 수 위지만, 편의성 및 접근성의 이유 등으로 모바일 분야 쪽에서는 많이 쓰이지 않는다. 이번 포스팅은 치트 엔진을 모바일 디바이스에 연결하는 방법에 대해서 기술하고자 한다.
다운로드
치트 엔진을 모바일 디바이스에 연결해 사용하기 위해서는 Frida 서버와 같이 디바이스에서 실행되어 클라이언트와 통신하며 명령을 수행하는 별도의 에이전트(Cheat Engine Server) 파일이 필요하다. 치트 엔진 클라이언트와 서버는 아래의 공식 홈페이지를 통해 다운로드 가능하며, 다운로드 방법은 [그림 1]을 참고하자
실습
먼저 다운로드 받은 CEServer(Cheat Engine Server) 파일에는 [그림 2]와 같이 실행 파일인 "ceserver"와 라이브러리 파일인 "libceserver-extension", "libMonoDataColletor"가 포함되어 있다. 여기서 자신의 모바일 디바이스 아키텍처에 맞는 "ceserver", "libceserver-extension" 파일을 디바이스로 옮겨줘야 한다. 필자의 디바이스의 경우 ARM 64비트 아키텍처로 "ceserver_arm64"와 "libceserver-extension_arm64.so" 파일이 필요하다.
아키텍처 버전은 아래의 명령어를 통해 확인 가능하다.
adb shell getprop ro.product.cpu.abi
adb shell uname -m
adb push 명령어를 사용하여 [그림 4]와 같이 ceserver, libceserver-extenstion 두 파일을 디바이스 내에 "/data/local/tmp" 디렉터리로 복사해준다.
[그림 5]와 같이 chmod 명령어를 통해 복사한 두 파일에 모든 권한을 부여해준다.
치트 엔진 클라이언트와 통신을 위해 ceserver_arm64 파일을 실행시켜준다. 이때, ceserver와 libceserver-extenstion 파일은 같은 경로 상에 위치해 있어야 하며, 정상적으로 실행이 성공 됐다면 [그림 6] 처럼 "Listening success" 구문이 출력된다.
디바이스 포트와 PC 포트가 서로 연결될 수 있도록 "adb forward" 명령어를 통해 포트 포워딩을 해준다. 이때, 사용되는 52736 포트 번호는 치트 엔진 서버의 디폴트 포트 번호이다.
adb forward tcp:52736 tcp:52736
치트 엔진 클라이언트를 실행 시킨 다음 [그림 8]과 같이 프로세스 목록으로 접근 후 "네트워크" 버튼을 클릭해준다.
그러면 서버 연결 관련 팝업이 출력되는데 호스트 입력 폼에는 "localhost"를 입력해주고 포트에는 [그림 7]에서 포트 포워딩 했던 포트 번호를 입력한 다음 연결하기 버튼을 클릭해준다.
치트 엔진 클라이언트와 서버 간의 연결이 성공적으로 되었다면, [그림 10]과 같이 프로세스 목록에 현재 모바일 디바이스에서 동작하고 있는 프로세스 목록이 출력된다. 그리고 분석을 원하는 대상의 프로세스를 클릭하고 열기 버튼을 클릭하면 해당 프로세스에 어태치 될 것이다.
마무리
지금까지 치트 엔진을 모바일 디바이스에 연결 시키는 방법에 대해서 살펴봤다. 다음 포스팅에서는 Game Guardian에 대해서 포스팅 해보도록 하겠다.
'안드로이드 기타 > 게임 분석' 카테고리의 다른 글
치트 엔진을 이용한 코드 인젝션 (1) | 2023.08.21 |
---|---|
치트 엔진을 이용한 정적 메모리 값을 변조하는 방법 (0) | 2023.08.07 |
치트 엔진을 이용한 동적 메모리 값을 변조하는 방법 (0) | 2023.08.01 |
안드로이드 Assembly-CSharp.dll 덤프 모듈 frida-il2cpp-bridge (0) | 2023.07.18 |