본문으로 바로가기

iOS App진단을 위해서는 프리다(Frida) 설치 및 실행은 필수이다. 하지만 각종 에러가 발생하며 프리다가 동작하지 않는 경우가 아주 많다. 아래는 필자가 격은 오류 및 해결방법을 정리한 것이니 참고하길 바란다.

 

오류 1 - 프리다 서버 오류.

프리다 설치 후 기기와의 연결(통신) 시 아래와 같은 오류가 발생하며 연결이 안 될 때가 있다.

오류원인 1). 기기에 설치된 프리다 버전이 기기의 iOS 버전과 맞지 않아 오류발생.

오류원인 2). PC에 설치한 프리다와 기기에 설치된 프리다 버전이 맞지 않아 오류 발생.

>frida-ps -U

Waiting for USB device to appear...

 

 

오류 1 해결방법 - 환경에 맞는 iOS 프리다 트윅 수동 설치.

자신의 환경에 맞는 버전의 프리다를 수동으로 설치하여 주면 해결된다.

 

아래의 사이트에 접속하여 자신의 기기에 맞는 버전을 다운로드한다.

https://github.com/frida/frida/releases

 

Releases · frida/frida

Clone this repo to build Frida. Contribute to frida/frida development by creating an account on GitHub.

github.com

 

자신의 기기에 맞는 버전 선택 > "Assets" 클릭 > "frida_[버전]_iphoneos-arm.deb" 다운로드

※ iphone 6는 12.8.2 버전을 추천한다.

 

3uTools, FTP 등을 이용하여 다운로드한 파일을 기기로 옮김 > 기기에 설치된 탐색기앱(Filza)을 이용하여 옮긴 파일을 설치

 

설치도중 아래와 같이 "터미널에서 열수 없습니다"라는 에러가 발생한 경우, SSH 연결을 통해 명령어로 설치해주어야 한다.

 

3u Tools 등의 툴을 이용해 SSH로 기기에 접속 > dpkg -i [파일명] 명령어를 이용해 설치.

 

 

오류 2 - 프리다 연결 오류.

프리다 서버로 인해 발생하는 오류는 위의 과정을 통해 해결하였으나, 이번엔 아래와 같은 오류가 발생하며 기기와의 연결이 안 되는 경우가 있다.

오류원인 1). PC에 설치된 프리다 버전과 기기에 설치된 프리다 버전과 맞지 않아 오류 발생.

오류원인 2). PC에 설치된 프리다 버전이 기기의 iOS버전에 비해 너무 높아 오류 발생.

>frida-ps -U

Failed to enumerate processes: this feature requires an iOS Developer Disk Image to be mounted; run Xcode briefly or use ideviceimagemounter to mount one manually

 

 

오류 2 해결방법 - 환경에 맞는 PC 프리다 버전 수동 설치.

기존에 설치된 프리다 삭제 후, 자신의 환경에 맞는 프리다를 설치하면 해결된다.

 

1. 설치된 프리다 삭제

pip uninstall frida

pip uninstall frida-tools

※ 삭제가 제대로 되지 않는 경우 conda 가상머신을 새로 만들어 새로운 환경에서 시작하는 것을 추천한다.

 

2. 프리다 수동 설치

pip install frida==12.8.20
pip install frida-tools==2.2.0

※ 진단기기가 iphone 6일 경우 frida 12.8.20, frida-tools 2.2.0 버전을 추천한다.

 

 

오류 3 - 프리다 실행 오류

프리다 설치 후 실행 시키면 아래와 같은 에러가 발생할 때가 있다.

>frida --version

***
Failed to load the Frida native extension: DLL load failed while importing _frida: 지정된 모듈을 찾을 수 없습니다.
Please ensure that the extension was compiled for Python 3.x.
***

Traceback (most recent call last):
  File "C:\Users\userid\AppData\Local\Programs\Python\Python310\Scripts\frida-script.py", line 33, in <module>
    sys.exit(load_entry_point('frida-tools==2.2.0', 'console_scripts', 'frida')())
  File "C:\Users\userid\AppData\Local\Programs\Python\Python310\lib\site-packages\frida_tools\repl.py", line 24, in main
    import frida
  File "C:\Users\userid\AppData\Local\Programs\Python\Python310\lib\site-packages\frida\__init__.py", line 24, in <module>
    raise ex
  File "C:\Users\userid\AppData\Local\Programs\Python\Python310\lib\site-packages\frida\__init__.py", line 7, in <module>
    import _frida
ImportError: DLL load failed while importing _frida: 지정된 모듈을 찾을 수 없습니다.

 

 

오류 3 해결방법 - 파이썬 설치경로를 C:\Python으로 변경.

이 오류는 프리다가 파이썬(Python)의 경로를 찾지 못해 발생한 문제이다. 파이썬을 C:\Python에 재설치해주면 해결된다.

 

1. PC에 설치된 프리다 삭제

pip uninstall frida

pip uninstall frida-tools

 

2. PC에 설치된 파이썬 삭제

제어판 > 프로그램 및 기능 > Python [버전] 삭제

 

3. 파이썬 재설치

"Add Python 3.7 to PATH" 선택 > "Customize installation" 클릭 > 설치경로를 "C:\Python"으로 지정 > "Install" 클릭

※ 위에서 변경한 설정 외 선택사항은 모두 기본(default) 설정으로 한다.

 

4. 프리다 설치

pip install frida-tools

 

위의 해결방법을 모두 따라 했을 경우, 아래와 같이 제대로 실행되는 것을 확인할 수 있다.

 

 

오류4 - 시디아에서의 프리다 설치 오류.

시디아(Cydia)에서 프리다를 설치할때 아래와 같은 오류가 발생하는 경우가 있다.

오류원인 1). 기기의 iOS버전이 낮아 시디아를 통해 프리다 설치 불가.

Running Debian Packager

dpkg-deb --control subprocess returned error exit status 2
Sub-process /usr/libexec/cydia/cydo returned an error code(1)

 

 

오류 4 해결방법 - iOS 프리다 트윅 수동 설치.

기기의 iOS 버전에 맞는 하위버전의 프리다를 수동설치하면 정상적으로 설치된다.

본문의 최상단에 있는 오류1 해결방법을 참고하여 기기에 프리다 트윅을 수동 설치한다.

 

 

오류 5 - 한글깨짐 현상.

프리다로 기기에서 동작중인 앱을 확인할 때 한글로 된 앱들은 제대로 출력이안되는 경우가 있다.

오류원인 1). 기기에 설치된 프리다 서버의 버전이 낮아 한글지원이 안되는 경우 한글이 깨짐.

※ 12.8.20 버전의 프리다서버에서는 위와같이 한글이 제대로 출력 안됨.

 

오류 5 해결방법 - 높은 버전의 프리다 서버 설치.

"오류 1 해결방법"에서의 프리다서버 수동 설치 방법을 이용해 15버전 이상의 프리다서버를 기기에 설치하면 한글이 제대로 출력됨을 확인 할 수 있음.

 

 

오류 6 - pasteboard-monitoring.js 실행 오류.

pasteboard-monitoring.js 사용을 위해 frida -U -l 명령어 사용 중 아래와 같은 오류가 발생하는 경우가 있다.

오류 원인 1). pasteboard-monitoring.js 소스코드 내에 변수 a가 선언되어 있지 않아 오류 발생.

> frida -U -l pasteboard-monitoring.js DVIA-v2

ReferenceError: 'a' is not defined
    at <anonymous> (C:\pasteboard-monitoring.js:19)
    at apply (native)
    at <anonymous> (frida/runtime/core.js:59)

 

 

오류 6 해결방법.

아래와 같이 pasteboard-monitoring.js 파일의 소스코드를 수정.

//17 line 주석처리
//a = "";

 

 

오류 7 - frida -U -l 명령어 디바이스 연결 오류.

외부 스크립트 사용을 위해 frida -U -l 명령어 사용 중 아래와 같은 오류가 발생하는 경우가 있다.

오류 원인 1). 디바이스의 iOS버전과 프리다 버전이 맞지않아 발생하는 문제.

Failed to attach: need Gadget to attach on jailed iOS; its default location is: C:\Users\ID\AppData\Local\Microsoft\Windows\INetCache\frida\gadget-ios.dylib

 

 

오류 7 해결방법.

본문 상단에 있는 오류2 해결방법을 참고하여 해결.

 

 

오류 8 - Failed to spawn 오류

오류 원인. 디바이스의 frida-server가 동작하지 않거나 깨져서 발생하는 문제.

오류 내용
Failed to spawn: need Gadget to attach on jailed Android; its default location is: C:\Users\...\AppData\Local\Microsoft\Windows\INetCache\frida\gadget-android-arm64.so

 

오류 8 해결방법.

디바이스에 설치된 frida server를 실행, 실행했는데도 동일한 문제가 발생할 경우 재설치