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에 노출하면 모든 도구에 대한 인증되지 않은 네트워크 접근이 가능하다고 명시적으로 경고합니다.

작동 방식 – 높은 수준의 흐름

  1. LLM 클라이언트 (Claude, Ollama, OpenAI 등)는 Model Context Protocol을 사용하여 MCP 서버에 요청을 보냅니다.
  2. 서버는 요청을 JADX GUI 내부에서 실행 중인 JADX‑AI‑MCP 플러그인에 HTTP 호출로 전달합니다.
  3. 플러그인은 요청된 작업(예: fetch_current_class, rename_variable)을 실행합니다.
  4. 결과는 서버로 다시 전송되며, 서버는 이를 도구 응답으로 형식화하여 LLM에 반환합니다.
  5. 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에서 직접 가져온 것이며; 외부 가정은 추가되지 않았습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트