Security Note
반응형

 

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 상태인지 확인

반응형
profile

Security Note

@긴면봉

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!