Read-only file system 이슈
frida-server 파일을 adb 내부에서 옮겨야할때 옮길수없다는 mount 오류가 발생할수 있는데 이때는 다음과 같은 명령어로 상위 디렉토리인 /에 rw 권한을 부여해준다. 오류가 발생할시 /system으로 좀더 정확하게 하는것도 방법이다.
mount -o rw,remount /
이후 파일을 옯겼으면 다시 ro로 변경해주자.
mount -o ro,remount /
mount -o rw,remount / 로 해결이 되지 않는다면?
알고보니 안드로이드 에뮬레이터는 read-only로 실행되고 있었고 이를 해결하기 위해 다음과 같이 진행 했다.
- 애뮬레이터가 설치된 경로로 들어간다 ex) ~/Library/Android/sdk/emulator
- -writable-system 의 설정을 주고 에뮬레이터를 직접 실행한다.
애뮬레이터 경로에서 cmd를 실행한뒤 다음명령어를 통해 실행한다.
emulator @Pixel_6_Pro_API_33 -writable-system
- 이후 다른곳에서 나왔던 것처럼 루트 권한을 주고 remount를 해준뒤 꼭 remount를 해줘야한다
adb root
adb disable-verity
adb reboot
adb remount
adb shell
mount -o rw,remount /system
인증서& 프록시 이슈
- 피들러와 버프스위트의 인증서는 다르며 각 인증서마다 해쉬값이 정해져있다.
- 피들러 : 269953fb.0
- 버프 스위트 : 9a5ba575.0
- 크롬 브라우저는 추가 인증서 문제로 프록시가 잘 적용되지 않을 수 있다 따라서 삼성 브라우저같은 다른 브라우저로 확인을 해본다.
- 안드로이드 인증서를 확인할때 피들러와 버프 스위트는 서로 시스템 인증서 이름이 다르다.
- 로컬에 인터넷이 연결되어있다면 핫스팟으로 연결이 가능한데 이때 대부분 프록시 설정 ip의 끝부분이 1 또는 2이다.
와이파이는 같은 와이파이를 사용해야하며 로컬 ip의 주소로 설정해준다.
frida-server 이슈
- frida의 버전이 16.2 보다 높으면 frda-ps -U가 안되기에 그보다 낮은 버전을 install해줘야한다.
- pip install frida==15.x.x
- ps상태가 do_wait 으로 계속된다. - swap이슈로 timeout 오류가 발생하는데 frida-server가 잘 실행되고 있는지 확인하자
- Unable to connect to the frida server: need Gadget to attach on jailed Android 에러
Android 10 이상부터 존재하는 USAP 기능(빠른 앱 실행 기능)을 비활성화 하면 해결된다. adb shell안에서 작동 시키자
a50:/ # setprop persist.device_config.runtime_native.usap_pool_enabled false
➕ frida -U -f [페키지 이름] 으로 프리다가 잘 붙는지 확인을 먼저해보면서 오류를 해결하자.
Android emulater(intel) 앱설치 이슈
💡 adb install 이슈가 있었다.
알고보니까 어찌어찌 설치하더라도 앱마다 실행 가능한 아키텍처를 확인해야하는 것을 알게 되었다.
사용하는 기기의 아키텍처는 다음 명령어로 확인 할수 있다
-이는 frida server를 설치할때도 유용하다.
>adb shell>getprop ro.product.cpu.abi fh
intel은 대부분 86x를 지원하는데 사용하려했던 앱는 arm만 지원하는것을 apk lib에서 확인 할 수 있었다.(Mac 은 arm임)
frida를 못 잡는 이슈
💡 frida python time에러및 제대로 swan이 되지 않을때 직접 js파일로 만들어서 이를 불러서 실행하는 방법을 사용했더니 해결이 되었다.
패키지명으로 실행
- frida-ps -U 를 통해서 패키지의 이름을 파악한다.
(이때 frida-ps -U 이 명령어는 frida-server가 실행되고 있어야 한다.) - frida -U -l "keyhook.js" 궁수의전설 처럼 frida -U -I [파일 경로] [패키지] 를 해준다.
pid 지정 실행
하지만 한글이 있어 가끔 잘 swan이 붙지 않을때는 pid 를 정해주는 방법도 있다.
- frida -U -l "keyhook.js" -p 7450
➕ 이때 frida-ps -U를 해줬을때 목록에 뜨지 않는다면 아무리 시도해도 되지 않는다…
keyhook.js는 본인이 직접 작성한 js 파일이다.
앱이 강제 종료되는 이슈
➕ 가끔 앱에서 충돌이 있어서 예상치 않게 종료되었다면서 막 종료 버튼이 뜨는 경우가 있었다
이럴때마다 디바이스를 다시 재부팅 해주면서 귀찮게 다시 frida server 세팅해주는 경우가 많았다.
- 이럴때는 인내심을 가지고 종료 경고창이 계속 뜰때 홈버튼을 사용해서 alert가 안뜨게 만들어 주고
- 인터넷도 들어가보고 세팅도 한번 들어가주고 약간의 인내를 가지고 이것저것 해준다. (약 2분..? 길면 5분..?)
- 정신을 차리고 다시 돌아오는 앱을 사용한다.
다음을 참고해도 좋다
앱의 데이터를 다 지우니까 좀 나아진것같았다
하지만 예전처럼 나아지지는 않는다…
해결
adb에서 다음과 같은 명령어를 입력한다.
setprop persist.device_config.runtime_native.usap_pool_enabled false
'Android' 카테고리의 다른 글
Android Nox 인증서 설치 (1) | 2023.12.28 |
---|---|
IoS Fiddler 프록시 설정 - 노트북 연결 x (1) | 2023.12.28 |
Android 프록시 인증서 세팅 (0) | 2023.12.28 |
Android frida server 세팅 (0) | 2023.12.28 |
안드로이드 루팅 - CF-Auto-Root, twrp (0) | 2023.12.28 |