
zafrida-ui v0.3.7
PyCharm / JetBrains IDE 내부의 Frida UI 도구 창.
中文 | English
ZAFrida UI - PyCharm Frida Plugin
현재 버전: 0.3.8
0.3.8 주요 업데이트
- Session 패널에서 "장치"와 "연결 모드"를 두 개의 독립된 행으로 분리했습니다. Device 행은 실제 장치만 나열하고, Mode 행에서 USB / Remote / Gadget과 엔드포인트를 선택합니다. Remote/Gadget 루프백의 adb 포트 포워딩, Force Stop, Open App은 항상 현재 선택된 휴대폰에 적용되며, 더 이상 이전 장치를 잘못 사용하지 않습니다.
- 장치를 처음 열거나 새로 고칠 때 실행 중이 아닌 adb server를 자동으로 시작하므로, 더 이상 수동으로
adb devices를 실행할 필요가 없습니다. - 저장된 장치가 온라인이 아닐 때 "미연결" 자리 표시자를 표시하고 관련 작업을 차단합니다. USB 장치가 한 대만 연결되어 있으면 자동으로 해당 장치로 전환하고 Console에 알립니다.
- Mode 행 아래에 실제로 실행되는 adb/frida 라우팅을 표시합니다. Gadget 모드에서는 Target 패키지 이름이 읽기 전용이지만 선택하여 복사할 수 있습니다.
- HTTP API의
/state에connection파싱 결과가 추가되었습니다.device-select --host는 여전히 사용 가능하지만 더 이상 권장되지 않으며, 엔드포인트는mode-set --host/--port로 변경하세요.
0.3.7 주요 업데이트
- 각 ZAFrida Project는 Python/Frida 환경을 독립적으로 선택하거나 공유할 수 있으며, 기본적으로 현재 PyCharm 프로젝트 인터프리터를 사용하고 venv, Conda, uv, Poetry, Pipenv, Hatch 등 로컬 환경을 지원합니다.
- Session UI와 Project Settings를 재설계하여 플러그인, Python, Frida 버전 정보를 완전히 표시하고, 적응형 및 드래그 가능한 로그 패널과 세션 상태를 최적화했습니다.
.js/.ts, Frida 16/17, 다중 프로젝트 환경 전환, 그리고 USB, Remote, Gadget 세 가지 연결 흐름을 완전히 지원합니다.- 로컬 HTTP API, CLI 및 중국어 Skill의 장치 복구, 세션 대기, 증분 로그 기능을 강화했습니다. 중복되고 불안정한 MCP 어댑터 계층을 제거했습니다.
프로젝트 소개
PyCharm/IntelliJ를 위해 설계된 Frida 그래픽 도구
ZAFrida UI는 PyCharm 및 JetBrains 시리즈 IDE에 통합된 Frida 그래픽 조작 플러그인입니다. Frida 명령줄 조작이 번거롭고 스크립트 관리가 혼란스러운 문제를 해결하는 것을 목표로 하며, 장치, 프로세스, 스크립트 및 로그를 관리하기 위한 완전한 UI 인터랙션 인터페이스를 제공합니다.
핵심 하이라이트는 "체크박스식" 템플릿 관리 시스템입니다. 사용자는 체크/체크 해제를 통해 코드 조각을 메인 스크립트에 동적으로 삽입하거나 주석 처리할 수 있어, "블록 조립식" Hook 스크립트 구성을 구현할 수 있습니다. 동시에 플러그인에는 완전한 프로젝트화 관리 (zafrida-project.xml)가 내장되어 있어 다중 장치, 다중 환경 구성의 빠른 전환을 지원합니다.
ZAFrida는 Frida를 대체하는 것이 아니라, frida-tools의 강력한 UI 셸로서 기존 Python 및 Frida 환경과 원활하게 연동됩니다.
간이 Wiki: ZAFrida UI 간이 Wiki (BBS) (더 간단한 Wiki입니다) 상세 사용 튜토리얼: ZAFrida UI 상세 사용 튜토리얼 Wiki
효과 데모

빠른 시작
- 플러그인 설치: IDE 플러그인 마켓에서 "ZAFrida"를 검색하거나 디스크에서 설치합니다.
- 기본 환경 구성: 기본적으로 현재 PyCharm 프로젝트의 Python Interpreter를 사용합니다. 전역
Settings->Tools->ZAFrida에는 도구 이름/경로 기본값만 유지됩니다. - 프로젝트 생성: 프로젝트 뷰에서 우클릭 ->
New Frida Project.- 해당 프로젝트에 다른 Frida 버전이 필요하면 ZAFrida
Project Settings를 열고 Python 인터프리터 또는 환경 디렉터리를 선택한 후Test를 클릭합니다.
- 해당 프로젝트에 다른 Frida 버전이 필요하면 ZAFrida
- 스크립트 작성/선택: Run 패널에서
agent.js또는agent.ts를 선택합니다. - Hook 디버깅:
- 장치 연결 (USB 또는 Remote 또는 Gadget).
- 대상 프로세스 또는 패키지 이름 선택.
- Run 클릭.
- 템플릿 사용:
Templates탭으로 전환하여 필요한 Hook 기능(예: "SSL Pinning Bypass")을 체크하면 코드가 자동으로 스크립트에 주입됩니다. - Skills 자동화 (선택): 기본적으로 비활성화되어 있습니다.
Settings/Preferences -> ZAFrida -> Skills HTTP API로 이동하여Enable Skills를 체크하면 로컬 API가 자동으로 시작됩니다(수동Start/Stop도 가능). CLI 및 템플릿 위치:- Skill 및 메인 CLI:
skills-template/zafrida-http-control/ - 구 경로 호환 런처:
skills-cli/zafrida_skill_cli.py
- Skill 및 메인 CLI:
교류 그룹 QR 코드
기능 특성
-
장치 및 프로세스 관리
frida-ls-devices와frida-ps를 통합하여 장치 목록을 원클릭으로 새로 고치고, 실행 중인 프로세스, 실행 중인 App 또는 설치된 애플리케이션을 확인할 수 있습니다. -
다중 모드 연결
USB / Remote / Gadget 모드를 완전히 지원하며, 사용자 정의 원격 Host와 Port를 지원하여 복잡한 명령줄 인자를 수동으로 조합할 필요가 없습니다. -
인터랙티브 스크립트 실행 (Run / Attach)
- 단순한 "모드 전환"이 아닌 Run(기본 Spawn) 과 Attach 두 가지 실행 동작을 지원합니다.
- Force Stop으로 대상 애플리케이션을 강제 중지할 수 있습니다.
- 내장 콘솔 로그 출력을 제공하며, 로그를 프로젝트 디렉터리
zafrida-logs/에 자동 저장합니다.
-
JS / TypeScript 에디터 우클릭 메뉴 (중요)
- Frida
.js또는.ts파일 편집 영역에서 우클릭하여 직접 선택할 수 있습니다:- Run Frida Script: 현재 파일을 메인 스크립트로 실행(기본 Spawn).
- Attach Frida Script: 현재 파일을 추가 스크립트로 실행 중인 대상 프로세스에 주입.
- 실행 전 현재 파일을 자동 저장하고, 스크립트가 속한 ZAFrida Project로 자동 전환합니다.
- 빠른 PoC, Demo 검증, Gadget 모드 또는 실행 중인 프로세스에 즉시 주입하는 데 적합합니다.
- 단축키:
- Windows / Linux:
Ctrl + Alt + S - macOS:
⌘ + ⌥ + S
- Windows / Linux:
- Frida
-
에디터 우클릭 Snippets 삽입
- JS / TypeScript 에디터 우클릭 메뉴에서 ZAFrida Frida Snippets를 제공합니다.
- 자주 사용하는 Frida 코드 조각을 원클릭으로 삽입합니다. 예:
Java.perform래핑 구조- Java 메서드 Hook 템플릿
Interceptor.attachNative Hook
- 삽입 과정은 IDE WriteCommandAction을 따르며 안전하게 실행 취소/재실행할 수 있습니다.
-
동적 템플릿 시스템 (핵심 혁신)
- Android / iOS에서 자주 사용하는 Hook 템플릿(예: SSL Pinning Bypass, Method Hook, Native Hook)을 내장.
- 체크박스 제어: 체크하면 코드가 삽입되고, 체크를 해제하면 코드가 자동으로 주석 처리되어 수동으로 삭제하거나 수정할 필요가 없습니다.
- 사용자 정의 템플릿을 지원하며, IDE 내에서 템플릿 코드를 실시간으로 미리 볼 수 있습니다.
-
Run Script + Attach Script 분리 설계
- 메인 Run Script와 독립적인 Attach Script의 공존을 지원합니다.
- "시작 시점 Hook"과 "실행 시점 주입 로직"을 분리하는 데 적합하여 복잡한 디버깅과 장기 유지보수에 편리합니다.
-
프로젝트화 구성 (ZAFrida Project)
- ZAFrida Project 개념을 도입하여 장치, 대상, 스크립트, Attach Script, 연결 매개변수 등을 하나의 완전한 작업 컨텍스트로 저장합니다.
- Project View에서 다음을 지원합니다:
New Frida Project로 새 프로젝트 생성Select Frida Project로 현재 활성 프로젝트 빠른 전환Load Frida Project로 기존 프로젝트 디렉터리 가져오기
- 프로젝트 전환 후 UI 상태와 구성이 자동으로 복원됩니다.
-
지능형 Python / Frida 환경 해석
- 기본적으로 현재 PyCharm 프로젝트의 Python SDK를 해석하며, 각 ZAFrida Project는 인터프리터 또는 환경 디렉터리를 개별적으로 재정의할 수 있습니다.
- 로컬 system/pyenv, venv/virtualenv, Conda, uv, Poetry, Pipenv, Hatch 환경을 지원합니다.
- 여러 ZAFrida Project가 동일한 경로를 선택하여 환경을 공유할 수 있어 venv를 복사할 필요가 없습니다. Frida 16/17 환경을 각각 유지 관리하는 데 적합합니다.
- 현재 IDE 환경 또는 명시적 프로젝트 환경에
frida-tools가 없으면 즉시 오류를 보고하며, 시스템 PATH의 다른 버전을 조용히 혼용하지 않습니다.Test로 실제 Frida 버전을 표시할 수 있습니다. - SSH, Docker, Docker Compose, WSL 등 원격 Python Interpreter는 현재 로컬 Frida 하위 프로세스에 사용할 수 없습니다.
-
Frida 17 / TypeScript
- 파일 선택, 우클릭 Run/Attach 및 Snippets가
.js/.ts를 지원합니다. Frida 17의 REPL은-l agent.ts를 자동으로 컴파일합니다. - 내장 템플릿이 Frida 17의 현대적인 Module/NativePointer API로 마이그레이션되었으며, Frida 16의 일반적인 환경도 계속 사용할 수 있습니다.
- frida-tools REPL은 호환성을 위해 표준 Java/ObjC bridges를 함께 제공합니다. npm/서드파티 모듈
import를 사용할 때는frida-create -t agent또는 동등한 엔지니어링 방식으로 의존성을 관리해야 합니다.
- 파일 선택, 우클릭 Run/Attach 및 Snippets가
-
Skills 로컬 자동화 인터페이스
- 로컬 Skills HTTP API(기본 비활성화)는 기능 탐색, 프로젝트/Python 환경, 장치 및 프로세스, Run/Attach, 기록 로그 목록, 바이트 커서 기반 증분 로그 읽기를 지원합니다.
- Skill에는 유계
wait-device/wait-session복구 흐름이 내장되어 있으며, 안전하게 재시도 가능한 읽기와 자동 재생할 수 없는 부작용 작업을 구분합니다. - 활성화 방법:
Settings/Preferences -> ZAFrida -> Skills HTTP API에서Enable Skills체크. - 함께 제공되는 CLI 및 템플릿:
skills-template/zafrida-http-control/(메인 Skill 및 CLI)skills-cli/zafrida_skill_cli.py(구 경로 호환 런처)
적용 시나리오
ZAFrida UI는 Frida를 사용한 모든 리버스 엔지니어링 시나리오에 적합하며, 특히:
- Android / iOS App 침투 테스트 및 리버스 분석.
- 서로 다른 Hook 스크립트를 자주 전환해야 하는 디버깅 과정.
- IDE (PyCharm/IDEA)를 사용하여 Python, JavaScript, TypeScript 혼합 개발을 즐기는 엔지니어.
기술 문서
-
환경 요구 사항:
- IntelliJ IDEA 또는 PyCharm (2024.3+ 권장)
- 로컬에 Python3 및
frida-tools설치됨 (pip install frida-tools) frida,frida-ps,frida-ls-devices가 시스템 PATH에 있거나 플러그인 설정에서 경로를 지정해야 합니다.
-
문제 피드백: Github Issues