zinja-coder/jadx-mcp-server
MCP server for JADX-AI Plugin
JADX‑MCP‑SERVER란 무엇인가?
JADX‑MCP‑SERVER는 로컬 LLM(예: Claude Desktop)과 JADX 디컴파일러 GUI 사이에서 작동하는 작은 Python 서비스입니다. 이 서버는 Model Context Protocol (MCP) – LLM이 디컴파일러에게 Android APK에 대한 정보를 요청하고 변수 이름 변경, 주석 추가 등의 변경을 지시할 수 있게 해주는 간단한 요청/응답 프로토콜 – 을 구현합니다.
이 서버는 JADX‑AI‑MCP라는 동반 플러그인(JADX GUI 내부에 설치)과 통신합니다. 플러그인은 서버로부터 HTTP 호출을 받아 JADX 내부에서 요청된 작업을 실행하고 결과를 반환합니다. LLM의 관점에서 전체 체인은 OpenAI 스타일의 함수 호출을 통해 호출할 수 있는 도구 집합처럼 보입니다.
핵심 기능 (README에 설명된 대로)
| 기능 | 설명 |
|---|---|
| 실시간 디컴파일 접근 | 현재 선택된 클래스, 이름으로 모든 클래스, 메서드, smali, AndroidManifest, 리소스 등의 소스를 검색합니다. |
| 검색 유틸리티 | 키워드로 클래스, 메서드 또는 필드를 찾고, 모든 클래스 나열, 클래스의 메서드 나열, 결과 페이지네이션. |
| 코드 편집 도우미 | JADX GUI에 표시되고 프로젝트와 함께 저장되는 변수 이름 변경, 주석 추가 또는 제거. |
| 디버그 통합 | JADX 디버거에서 스택 프레임, 스레드 및 변수 값을 가져옵니다. |
| 교차 참조 쿼리 | 클래스, 메서드 또는 필드에 대한 X‑refs(누가 무엇을 호출하는지)를 가져옵니다. |
| LLM 친화적 출력 | slim=True와 같은 옵션은 Kotlin 메타데이터를 제거하여 페이로드를 작게 유지합니다; 줄 번호 플래그는 모델이 정확한 줄을 참조하는 데 도움이 됩니다. |
| OpenAI 호환 클라이언트 | 샘플 examples/openai_compatible_client.py는 MCP 도구 목록을 OpenAI 함수 호출 스키마로 변환하여 OpenAI 채팅 API를 사용하는 모든 모델이 서버를 사용할 수 있게 합니다. |
| 구성 가능한 네트워킹 | MCP 서버의 호스트/포트(--host, --port) 및 JADX 플러그인(--jadx-host, --jadx-port). 로컬 테스트를 위한 일반 HTTP(--http)를 지원합니다. |
| 보안 경고 | README는 서버를 0.0.0.0에 노출하면 모든 도구에 대한 인증되지 않은 네트워크 접근이 가능하다고 명시적으로 경고합니다. |
작동 방식 – 높은 수준의 흐름
- LLM 클라이언트 (Claude, Ollama, OpenAI 등)는 Model Context Protocol을 사용하여 MCP 서버에 요청을 보냅니다.
- 서버는 요청을 JADX GUI 내부에서 실행 중인 JADX‑AI‑MCP 플러그인에 HTTP 호출로 전달합니다.
- 플러그인은 요청된 작업(예:
fetch_current_class,rename_variable)을 실행합니다. - 결과는 서버로 다시 전송되며, 서버는 이를 도구 응답으로 형식화하여 LLM에 반환합니다.
- LLM은 다른 도구를 요청하거나, 코드를 수정하거나, 최종 답변을 생성할 수 있습니다.
시작하기 (빠른 단계)
# 1. uv(또는 pip)로 Python 종속성 설치
uv sync # 또는: pip install -r requirements.txt
# 2. 서버 실행 (기본 포트 8651 → LLM, 8650 → JADX 플러그인)
uv run jadx_mcp_server.py --http
같은 머신에 JADX‑AI‑MCP 플러그인이 있는 JADX GUI가 있다면 추가 플래그가 필요 없습니다.
다른 머신(예: Docker, WSL)에 서버를 노출하려면 다음을 사용하세요:
uv run jadx_mcp_server.py --http --host 0.0.0.0
⚠️ README는 이렇게 하면 서버가 네트워크의 모든 사람에게 열리게 된다고 강조합니다; 방화벽이나 SSH 터널을 사용하세요.
OpenAI 호환 모델과의 예제 사용법
pip install -r examples/requirements.txt # openai SDK 설치
# 간단한 일회성 쿼리
OPENAI_API_KEY=sk-... python examples/openai_compatible_client.py \
--prompt "com.example.app에 필요한 권한은 무엇인가요?"
클라이언트는 프롬프트를 일련의 MCP 도구 호출로 변환하고, 서버를 통해 AndroidManifest를 가져온 후 간결한 답변을 반환합니다.
누가 유용하게 사용할 수 있나요?
- 보안 연구자: LLM을 사용하여 APK에서 취약점 사냥을 자동화하려는 사람.
- 리버스 엔지니어링 애호가: "디컴파일러와 채팅" 경험을 찾는 사람.
- 도구 개발자: LLM과 기존 Android 분석 도구 사이의 프로그래매틱 브리지가 필요한 사람.
로드맵 (나열된 대로)
- apktool 지원 추가 (이미 완료).
- Hermes(React‑Native) 코드 처리 추가.
- Docker 패키징.
- 더 많은 MCP 도구 및 프롬프트 템플릿.
- 완전한 로컬 LLM 클라이언트.
- 궁극적인 목표: 모든 Android RE 도구를 구동할 수 있는 단일 MCP 서버.
평가
이 저장소는 대규모 언어 모델과 Android 리버스 엔지니어링 도구 사이의 다리를 구축하는 진정한 소프트웨어 프로젝트입니다. 이는 명백히 AI 강화 도구 공간에 속하므로 off_topic = false입니다.
위의 모든 정보는 README에서 직접 가져온 것이며; 외부 가정은 추가되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트