반응형

UnityGame 분석을 위해서는 "global-metadata.dat", "libil2cpp.so" 파일을 il2cppdumper 나 il2cppinspector 툴에 집어넣고 클래스 덤프를 하는 과정이 필요합니다.

 

그런데, global-metadata.dat 파일에 보안조치를 취해놓은 경우에는 클래스 덤프가 쉽지 않습니다.

저의 경우 덤프 과정에서 "Index was outside the bounds of the array" 에러가 발생하였습니다.

 

 

이를 해결할 수 있는 좋은 방법이 있어 소개합니다.

1. Frida VS 코드 환경설정

hackcatml.tistory.com/64?category=84843 글을 참고해주세요.

 

2. frida-compile 설치

npm install frida-compile

 

3. frida-il2cpp-bridge Module 설치

VS 코드로 workspace 폴더를 열고 terminal에서 다음 명령어 입력하여 "frida-il2cpp-bridge" node 모듈을 설치해줍니다.

"frida-il2cpp-bridge" node 모듈에 대한 정보는 github.com/vfsfitvnm/frida-il2cpp-bridge 에서 확인 하실 수 있습니다.

"global-metadata.dat" 파일 없이 클래스 덤핑이 가능하다고 하네요.

npm install --save-dev frida-il2cpp-bridge

 

node_modules 폴더에 들어가면 "frida-il2cpp-bridge" 폴더가 추가되어있는 것을 확인 가능합니다.

 

4. example 스크립트 다운로드

minhaskamal.github.io/DownGit/#/home?url=https:%2F%2Fgithub.com%2Fvfsfitvnm%2Ffrida-il2cpp-bridge%2Ftree%2Fmaster%2Fexample 여기서 예제 스크립트 압축파일을 다운로드 받아서 압축해제한 폴더를 자신의 workspace에 추가시켜줍니다.

 

VS Code를 다시 열어보면 workspace에 example 폴더가 들어가 있는것을 확인 가능합니다.

 

5. index.ts 파일 frida-compile

example 폴더에 포함되어 있는 index.ts 파일을 다음 명령어를 사용하여 컴파일 시켜줍니다.

해당 터미널을 종료하시면 안됩니다. index.ts 파일을 수정하면 자동으로 컴파일이 진행되어 "_.js" 파일에 반영됩니다.

frida-compile -o _.js -S -w index.ts    // 컴파일 결과 _.js 파일 생성

 

6. UnityGame Attach

생성된 _.js 파일을 이용하여 목표 유니티 게임앱에 attach합니다.(frida 14 버전 이상을 권장합니다)

 

7. 클래스 덤프

index.ts 파일에 Il2Cpp.dump(); 문구를 추가하고 저장하면 클래스 덤프가 시작됩니다.

 

덤프 파일은 "/storage/emulated/0/Android/data/<패키지>/files/<패키지>_<버전>.cs" 형식으로 저장됩니다.

해당 파일을 열어보면 클래스 및 메서드 명을 확인할 수 있으며 RVA 값이 주석으로 표시되어 있습니다.

 

이제, 프리다로 관심 메서드를 후킹하여 분석을 시작해 볼 수 있습니다.

 

도움 되셨다면 공감이나 댓글 부탁드려요.

 

※ 참고

github.com/vfsfitvnm/frida-il2cpp-bridge

 

 

반응형

'Information Security > Android' 카테고리의 다른 글

gdb 단말기에서 실행  (0) 2021.05.10
Frida Detection Bypass(Android)  (0) 2021.05.01
삼성 펌웨어 다운로드  (1) 2021.02.02
Android SSL Pinning Bypass  (0) 2020.12.31
EdXposed 설치  (0) 2020.12.29

+ Recent posts