본문 바로가기

보안/모바일

[Game][AOS][FRIDA] frida-il2cpp-bridge 진단할때 js 파일로 루팅 우회 편법

***
사용도구
dnspy
frida
nodejs
frida ilb2cpp bridge

***

설치 방법: https://velog.io/@koo00/2 


 Dnspy 세팅하는방법 ( livil2cppdumper 세팅 법) 

 

libil2cpp.so 와 global-metadata.dat 두개의 파일이 필요하다 

apk 파일의 압축파일을 해제하여 libil2cpp.so 파일이 존재한다면 거기서 추출하여 사용하면 되지만 없는 경우도 있다 

 

그때는 adb로 들어가서 직접 꺼내야 한다. 

/data/app/대상 어플 위치/lib/arm64  에 위치를 한다  

 

해당 위치에서 libil2cpp.so  을 찾을수 있다 

ls -al
total 66164 drwxr-xr-x 2 system system 4096 2024-08-09 14:33 .
drwxr-xr-x 3 system system 4096 2024-08-09 14:33 ..
-rwxr-xr-x 1 system system 84304 1981-01-01 01:01 lib_burst_generated.so
-rwxr-xr-x 1 system system 49609472 1981-01-01 01:01 libil2cpp.so
-rwxr-xr-x 1 system system 6728 1981-01-01 01:01 libmain.so
-rwxr-xr-x 1 system system 18034784 1981-01-01 01:01 libunity.so

adb pull 을 이용하여 libil2cpp.so 을 꺼낸다 

 

global.meta.data 파일은 앱에 따라 다르겠지만 해당 실습 apk 파일에는 /assets/bin/Data/Managed/Metadata 에 존재하였다.

 

livil2cppdumper 프로그램으로 libil2cpp.so 와 global-metadata.dat 을 합쳐서 dll 파일을 만든다

프로그램 링크: https://github.com/Perfare/Il2CppDumper/releases 

 

Releases · Perfare/Il2CppDumper

Unity il2cpp reverse engineer. Contribute to Perfare/Il2CppDumper development by creating an account on GitHub.

github.com

 

사용 법은 간단하다 exe 파일을 실행시키고 so 파일 dat 파일 순서대로 삽입하면 된다

 

성공 하면 다음과 같은 성공 메세지를 확인할수 있다 

 

Assembly-CSharp.dll 파일을 dnspy로 실행시켜서 변조 시킬 함수를 찾으면 된다. 


진단 순서 

1. dnspy로 변조할 함수를 찾는다 


2. 변조할 코드는 index.ts를 작성한다.

          참고 코드: https://github.com/vfsfitvnm/frida-il2cpp-bridge/wiki/Snippets
3. npm run watch를 실행한다(playground 폴더 안에서 cmd 실행 시 가능)
4. frida를 실행시킨다.
             frida 실행 명령어 -> frida -Uf com.wecanverse.android -l _.js

 [실행원리]

    frida로 _.js 파일을 실행-> .ts 파일에 내용들이 js 문법에 맞게 _.js 파일로 옮겨짐 -> 작성된 .ts 내용 실행 

 

5. 값이 변경되었는지 확인한다.

 


 

취약점 보고서에  루팅탐지가 없어서 해당 내용을 포함했더니  이행점검을 할떄  루팅탐지 코드가 추가 되었다   
다른 취약점 이행을 하기위해서는 루팅우회를 해야한다  ts 코드에 맞게 루팅우회 코드를 작성하지만 정말 좋겠지만 시간 문제로  인터넷에 떠돌아 다니는 루팅 우회 코드인 multiplebypass.js를  index.ts에 쓰면 문법 오류가 난다 

그래서 일단 _.js에 루팅우회 코드를 넣어주고 실행을 하면 

js 에 있는 루팅우회코드가 먼저 실행이 되고 ts에 내용들이 옮겨지기 때문에 루팅우회를 할수 있다 


그 대신 한번 실행시킬때마다 ts 내용들이 _.js로 덮어씌여지기때문에 실행시킬때마다 _.js 파일에 루팅우회 코드를 넣어줘야 한다

반응형