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 |