JADX + Cursor 연동 가이드 (MCP)
JADX + Cursor 연동은 jadx-ai-mcp 플러그인을 통해 MCP(Model Context Protocol) 방식으로 구현
JADX-GUI에서 디컴파일한 APK를 Cursor AI가 직접 분석할 수 있게 해주는 구조
아키텍처 개요
APK → JADX-GUI (플러그인) → MCP 서버(Python) → Cursor AI Agent
JADX-GUI의 jadx-ai-mcp 플러그인이 HTTP 서버(포트 8085) 역할을 하고, Python MCP 서버가 중간에서 Cursor와 JADX를 연결
설치 단계
필수 파일 다운로드
작성일 기준 jadx 1.5.5
jadx-ai-mcp 6.3.0
- jadx-gui : https://github.com/skylot/jadx/releases (권장 v1.5.1 이상)
- jadx-ai-mcp plugin + server : https://github.com/zinja-coder/jadx-ai-mcp/releases
- Cursor IDE : https://cursor.com/download
JADX-GUI 플러그인 설치
두 가지 방법이 있지만 자동을 추천
- 자동 : Plugins > Manage plugins > JADX-AI-MCP Plugin 클릭 후 우측에 install 클릭

- 설치 완료된 화면

- 수동 : 파일 > 설정 > 플러그인 > Install plugin > .jar 파일 선택
> 설치 후 JADX-GUI를 재시작하고, Plugins 메뉴에서 jadx-ai-mcp가 활성화(체크)된 상태 확인

APK 로드 후 JADX 하단 로그 탭에서 아래 메시지가 확인되면 정상
로그 확인 단축키 ( ctrl + shift + L) (도움말 > 로그뷰어)

MCP HTTP server started on port 8085

Python MCP 서버 환경 구축 (Windows)
PowerShell에서 아래 순서대로 실행
1) uv 설치 & PATH 환경변수 등록
C:\> powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
C:\> $env:Path = "C:\Users\<유저명>\.local\bin;$env:Path"
2) Python 3.10+ 가상환경 생성 및 활성화(새로운 cmd창 열기 후)
C:\> uv venv --python 3.10
C:\> .\.venv\Scripts\activate # 가상환경 activate
4) 의존성 설치
C:\> uv pip install httpx fastmcp
⚠️ 설치 완료 후 C:\Users\<사용자명>\.local\uv.exe를
C:\Users\<사용자명>\.venv\Scripts\ 폴더 안에 복사해야함
5) jadx-ai-mcp plugin + server 압축 해제 후 .venv 디렉토리에 복사

Cursor MCP 설정
설정 경로 : Cursor Settings > Tolls & MCPs > New MCP Server 클릭


New MCP Server 클릭 후 mcp.json을 아래와 같이 작성
{
"mcpServers": {
"jadx-mcp-server": {
"command": "C:\\Users\\<유저명>\\.venv\\Scripts\\uv.exe",
"args": [
"--directory",
"C:\\Users\\<유저명>\\.venv\\jadx-mcp-server",
"run",
"jadx_mcp_server.py"
]
}
}
}
⚠️ 경로에 한글 또는 공백이 포함되면 인식 실패하므로 영문 경로를 사용
⚠️ 역슬래시는 \\ 이중 이스케이프 필수
연동 상태 확인
Cursor Settings > Tools & MCPs 탭에서 jadx-mcp-server 항목 옆에 🟢 초록 점이 보이면 정상 연결된 상태

사용 방법
분석 순서
1) JADX-GUI에서 분석할 APK 로드 (반드시 열린 상태 유지)
2) Cursor에서 Ctrl + I → Agent 창 열기 (Chat 모드 아닌 Agent 모드 사용)
3) 자연어로 분석 요청 입력 → AI가 MCP 툴을 자동으로 호출
⚠️ Ctrl + L (Chat) 이 아닌 Ctrl + I (Agent) 를 사용해야 MCP 툴이 호출
추천 분석 프롬프트
진입점 및 구조 파악
****첫 질문 시 mcp로 연결된 jadx에 열린 APK 파일에 분석을 요청
- AndroidManifest.xml에서 exported된 컴포넌트 목록 추출해줘
- 메인 액티비티 코드 가져와서 진입점 분석해줘
- 앱 전체 클래스 목록 보여줘
취약점 탐색
- "root", "ssl", "certificate", "hook" 키워드로 관련 클래스 찾아줘
- HTTP/HTTPS 통신 관련 클래스와 메서드 분석해줘
- 하드코딩된 민감 문자열(키, 토큰, URL) 추출해줘
- 로그인/인증 관련 로직이 있는 클래스 분석해줘
- 루트 탐지 로직이 있는 클래스 찾아서 우회 포인트 알려줘
트러블슈팅
MCP 서버가 연결되지 않을 때
1) 경로에 한글/공백 없는지 확인
2) 역슬래시 이중 이스케이프 \\ 적용 여부 확인
3) Cursor 완전 종료 후 재시작 (작업 관리자에서 프로세스 종료 확인)
연결은 됐지만 엉뚱한 답변이 올 때
Cursor ↔ jadx_mcp_server.py 연결은 됐지만, Python 서버가 JADX-GUI 플러그인 HTTP 서버에 접근을 못 하는 상태
1) JADX-GUI가 열려있고 APK가 로드된 상태인지 확인
2) JADX 하단 로그에 MCP HTTP server started on port 8085 메시지 확인
3) PowerShell에서 포트 응답 테스트
Invoke-WebRequest -Uri "http://localhost:8085/packages"
- JSON 응답 오면 JADX 플러그인 정상 → jadx_mcp_server.py 설정 확인
- 연결 거부 오면 JADX 플러그인 서버 미기동 → JADX 재시작 필요
포트 확인 명령어 : netstat -ano | findstr :8085 → LISTENING 상태인지 확인
'취약점 진단 > 모바일_AND' 카테고리의 다른 글
| [Android] AVD Emulator 취약점 진단 환경 구축 (0) | 2024.10.11 |
|---|---|
| Flutter로 개발된 모바일 앱 HTTP Proxy 환경 구축 (0) | 2023.02.16 |
| [Android] Frida를 이용한 android 앱 메모리 덤프 (0) | 2022.11.07 |
| [Android] 취약점 점검 Drozer 설치 및 사용법 Github (0) | 2022.11.07 |
