-
JS Injection을 이용
-
대상 : WIndows, macOS, Linux, IOS, Android, and QNX 기반 네이티브 앱
설치 (ubuntu)
$ sudo pip install frida |
python -m pip install frida |
-
플랫폼과 비트별 버전 존재
-
android-server-xx.xx.x-android-arm.xz으로 받음
# adb에서 android 버전 체크 $ wget https://github.com/frida/frida/releases/download/11.0.6/frida-server-11.0.6-android-arm.xz $ unxz frida-server-11.0.6-android-arm.xz $ cp frida-server-11.0.6-android-arm frida-server $ adb push ./frida-server /data/local/tmp $ adb shell "chmod 777 /data/local/tmp/frida-server && /data/local/tmp/frida-server &" |
-
에이전트 트러블 슈팅 (지니모션)
-
./frida-server: not executable: 32-bit ELF file
-
에뮬레이터는 x86이므로 x86용 server를 다시 준비해서 설치
-
arch 문제가 대부분이므로 arm, arm64, x86, x86_64를 다 구비해놓고 환경이 달라질 때마다 가지고 있는게 시간효율적.
-
서버 실행 확인
$ adb shell "ps | grep server" |
Usage: frida [options] target Options: --version show program's version number and exit -h, --help show this help message and exit -D ID, --device=ID connect to device with the given ID -U, --usb connect to USB device -R, --remote connect to remote frida-server -H HOST, --host=HOST connect to remote frida-server on HOST -f FILE, --file=FILE spawn FILE -n NAME, --attach-name=NAME attach to NAME -p PID, --attach-pid=PID attach to PID --debug enable the Node.js compatible script debugger --enable-jit enable JIT -l SCRIPT, --load=SCRIPT load SCRIPT -c CODESHARE_URI, --codeshare=CODESHARE_URI load CODESHARE_URI -e CODE, --eval=CODE evaluate CODE -q quiet mode (no prompt) and quit after -l and -e --no-pause automatically start main thread after startup -o LOGFILE, --output=LOGFILE output to log file |
-
-D : 연결할 디바이스 ID > [IP주소]:[Port번호]
-
-R : 원격 프라다 서버 연결
-
-U : usb 연결
-
-H : 원격 프라다 서버가 있는 호스트 연결
-
-P : 후킹을 원하는 pid 입력
-
frida 백그라운드 실행 후 pid 확인
$ adb shell "/data/local/tmp/frida-server &" |
- adb device로 device IP주소 확인 후 연결
$ adb devices |
# python -m pip install frida-tools |
$ frida-ps -D "192.168.85.102:5555"
PID Name ---- ------------------------------- 142 adbd 1218 android.ext.services 1430 android.process.acore 1373 android.process.media 266 audioserver 1907 batteryd 267 cameraserver 1489 com.android.calendar 1546 com.android.camera2 1071 com.android.deskclock 1524 com.android.dialer 1564 com.android.email 1587 com.android.gallery3d 722 com.android.inputmethod.latin 1321 com.android.launcher3 1410 com.android.managedprovisioning 1603 com.android.messaging 1623 com.android.onetimeinitializer 835 com.android.phone 1268 com.android.printspooler 1468 com.android.providers.calendar 1448 com.android.quicksearchbox 898 com.android.settings 760 com.android.systemui 1249 com.genymotion.genyd 1653 com.genymotion.superuser 124 debuggerd 126 debuggerd:signaller 257 diskiod 268 drmserver 1956 frida-helper-32 1864 frida-server 138 gatekeeperd 277 genybaseband 283 healthd 1 init 269 installd 270 keystore 259 lmkd 254 local_camera 255 local_camera 253 local_opengl 516 logcat 115 logd 258 logwrapper 271 media.codec 273 media.extractor 272 mediadrmserver 274 mediaserver 275 netd 260 network_profile 139 perfprofd 136 redis 276 rild 737 sdcard 261 servicemanager 262 settingsd 527 sh 1825 sh 264 su 464 surfaceflinger 574 system_server 97 ueventd 263 vinput 125 vold 718 wpa_supplicant 265 zygote |
-
함수 호출에 대하여 앱을 실행 후에 동적으로 거쳐가는 fucntion을 추적해준다.
-
frida 프레임워크를 사용하는 덤프 도구
-
덤프하기
> py -2 .\fridump.py -u -s [대상 앱 패키지명] # EXAMPLE # usage: fridump [-h] [-o dir] [-u] [-v] [-r] [-s] [--max-size bytes] process # -s : 모든 덤프파일의 문자열도 덤프, ./dump/strings.txt로 떨어짐 > py -2 .\fridump.py -u -s com.genymotion.superuser |
'Programming > Android' 카테고리의 다른 글
Android/Error/Configuration 'compile' is obsolete and has been replaced wit 'implementation (0) | 2018.06.11 |
---|---|
Android/ADB SHELL INPUT (0) | 2018.05.23 |
Android/apktool/brut.androlib.AndrolibException: brut.common.BrutException (0) | 2018.05.16 |
Programming/Android/Custom Binary(recovery) Blocked by frp lock 해결 (0) | 2018.04.25 |
Android/InsecureBankv2 환경 구축(Windows) (0) | 2018.03.29 |