frida-server 시동을 위해 필요한 슈펴유저 권한을 얻을 수있는 루팅폰을 가지고 후킹(Hooking) 작업을 진행하는 과정입니다.
brew install python3
pip3 install frida-tools
git clone "링크"
fridump3.py 수정
.attach(APP_NAME) => .attach(int(APP_NAME))
원본
session = frida.get_usb_device().attach(APP_NAME)
수정
session = frida.get_usb_device().attach(int(APP_NAME))
디버깅모드의 기기를 연결 후
adb shell getprop ro.product.cpu.abi
adb shell로 기기에 접속한 후 getprop 명령어를 입력해도 동일합니다.

frida --version

2-3번에서 조회한 16.5.2 에 맞는 서버 파일을
https://github.com/frida/frida/releases 에서 찾습니다.

2-2번에서 조회한 아키텍처에 맞는 파일을 찾아 다운로드 후 압축해제 합니다.
저는 실제 안드로이드 기기를 디버깅해 덤프작업을 하기 위해 -android파일을 골랐습니다.
필요한 OS에 맞게 다운로드 하면 되겠습니다.

adb push Downloads/frida-server-16.5.2-android-arm64 data/local/tmp
adb push frida-server 파일의 로컬 경로 data/local/tmp 이러한 구조입니다.

명령어 순서
1.adb shell : adb 접속
adb shell
2.cd data/local/tmp : 3-1번에서 firda-server파일을 push 한 경로로 이동
cd data/local/tmp
3.ls : 정상 push ( 파일 존재 ) 여부 확인
ls
여기서 바로 서버를 시동하면

Permission denied 이 발생합니다.
테스트 기기는 루팅폰 이기 때문에 슈퍼유저 권한을 습득하고 다시 시동합니다.

./frida-server-16.5.2-android-arm64 &

명령어 마지막에 &가 붙은 이유는 백그라운드로 실행하기 위해서입니다.
Android 장치에서 SELinux가 Enforcing 모드로 설정되어 있으면 Frida가 시스템 프로세스 또는 특정 애플리케이션에 접근하지 못할 수 있습니다. 이 경우, Failed to attach 오류가 발생할 수 있습니다.
SELinux 상태를 확인합니다.
adb shell getenforce
Permissive 모드로 변경:
adb shell su -c "setenforce 0"
이 명령은 SELinux를 Permissive 모드로 변경하여 Frida가 제한 없이 시스템 프로세스에 접근할 수 있게 해줍니다. 그러나 보안 설정을 완전히 해제하는 것이므로, 실사용 장치에서는 주의해서 사용해야 합니다.
실행중인 프로세스를 확인합니다.
frida-ps -Ua

목록에서 덤프작업을 진행할 앱의 PID를 확인합니다.

확인된 PID는 17810입니다.
1번 준비 과정에서 git clone받은 frida 경로로 이동한 후 명령어를 입력합니다.
python3 fridump3.py -u -r 17810

/dump 경로에 .data 파일들이 쌓여 가는걸 확인 하실 수 있습니다.

용도에 맞게 여러 방식으로 확인 및 추출을 할 수 있습니다.

안드로이드 스튜디오 BinEd 플러그인을 설치해서

File - Open As Binary 를 통해 .data 파일을 열고 중요한 문자( String 등 ) 데이터가 메모리에 남는지 직접 검색 할 수도 있고

foremost를 설치해서 스크립트문과 툴을 통해 추출된 파일로 메모리에 남은 이미지를 포렌식 할 수 도 있습니다.

👇 00002054.jpg 이미지 파일이 검출된 모습👇
