vmoranv/jshookmcp

A search-first, profile-aware reverse-engineering workspace for AI agents — 735 tools across 36 domains in one MCP server.

📦 @jshookmcp/jshook이란 무엇인가요?

MCP (Model-Context-Protocol) 서버로 실행되는 검색 우선, 프로파일 인식 리버스 엔지니어링 워크스페이스입니다. AI 에이전트(Claude Desktop, Cursor 등)가 수천 개의 도구 스키마를 미리 로드할 필요 없이 브라우저 자동화부터 WASM 디스어셈블까지 프론트엔드 및 바이너리 분석을 위한 풍부한 툴박스와 상호작용할 수 있게 합니다.


🎯 핵심 개념

  • MCP 서버 – AI 에이전트가 호출할 수 있는 통합된 JSON-RPC 스타일 인터페이스를 제공합니다.
  • 프로파일 – 세 가지 경량 도구 세트(search 약 3K 토큰, workflow, full 약 40K 토큰)를 제공합니다. 에이전트는 아주 작은 프로파일로 시작하여 작업이 커짐에 따라 "승격"함으로써 LLM 토큰 사용량을 낮게 유지합니다.
  • 런타임 복구 – 스트리밍 가능한 HTTP 세션을 통해 연결이 끊긴 후에도 브라우저 연결 상태, 커버리지 데이터, 활성화된 도메인을 복구하며 각 클라이언트의 세션을 격리 유지합니다.

🔧 주요 기능(개요)

영역 기능
브라우저 자동화 CDP를 통한 Chromium/Camoufox 제어, 탐지 방지 프리셋, CAPTCHA 해결, HTTPS-MITM, HTTP/2 프레임 빌드, 팝업/다운로드/권한 가로채기.
네트워크 가로채기 HTTPS CA 자동 생성, WebSocket 캡처, GraphQL 인트로스펙션, Burp Suite 브리지.
JS 분석 LLM 보조 난독화 해제, 암호 루틴 탐지, AST 변환, 소스맵 재구성, 스크립트 추출/리플레이.
WASM RE wabt 기반 디스어셈블 (wasm2wat, wasm-decompile, wasm-objdump), Binaryen 최적화, 섹션 파싱, 차이점 분석, 난독화 탐지, 계측.
바이너리 및 프로세스 포렌식 Frida/Ghidra/IDA 브리지, 하드웨어 중단점, PE 인트로스펙션, 메모리 읽기/쓰기, 상호 참조 그래프.
Android/APK 정적 트리아지, 매니페스트 덤프, apktool 디코드/빌드, jadx 디컴파일, DEX 스캔, 네이티브 라이브러리 목록, unidbg 에뮬레이션.
조정 진행률/취소 기능이 있는 작업 큐, 다중 에이전트 세션 처리, 커버리지 보고서.
확장성 핫 리로드 플러그인, 선언적 YAML 워크플로우, 자동 도메인 탐지(36개 내장).

📚 일반적인 사용 사례

시나리오 jshook 활용 방법
난독화된 번들 확인 search_tools → deobfuscate → search_in_scripts → understand_code (core 도메인 사용).
CAPTCHA 해결 Camoufox 실행, 스크린샷 촬영, LLM에 전달하여 수동 입력, 솔루션 리플레이.
OAuth 흐름 캡처 및 리플레이 MITM 프록시 (proxy_start) 실행, 요청 수집, GraphQL 인트로스펙션, 시퀀스 리플레이.
WASM 암호 루틴 리버스 모듈 덤프, 디스어셈블, 훅 생성, 메모리 중단점 설정.
의심스러운 APK 감사 정적 트리아지 실행, 매니페스트 덤프, jadx로 디컴파일, DEX 내 의심스러운 패턴 스캔.
끊긴 브라우저 세션 복구 스트리밍 가능한 HTTP 전송을 통해 재연결; 서버가 이전 CDP 연결 및 커버리지 상태 복구.
사용자 정의 워크플로우 구축 사용 가능한 확장 워크플로우를 나열하고 단일 도구로 실행 (run_extension_workflow).
실시간 프로세스 훅 Frida 브리지를 사용하여 실행/연결, 인터셉터 설치 및 함수 열거.

🚀 AI 에이전트 클라이언트용 퀵 스타트

MCP 클라이언트 설정에 서버를 추가합니다(Claude Desktop / Cursor 예시):

{
  "mcpServers": {
    "jshook": {
      "command": "npx",
      "args": ["-y", "@jshookmcp/jshook@latest"],
      "env": {
        "MCP_TOOL_PROFILE": "search",
        "npm_config_omit": "optional"
      }
    }
  }
}

search 프로파일은 최소 3K 토큰의 메타데이터만 로드합니다.

여러 에이전트가 무거운 런타임(브라우저, 임베딩 등)을 공유하려면 공유 데몬을 시작하세요:

pnpm build
pnpm daemon   # 127.0.0.1:3000에서 Streamable HTTP 서버 실행

그런 다음 각 클라이언트를 http://127.0.0.1:3000/mcp로 지정합니다. 각 클라이언트는 여전히 격리된 MCP 세션을 얻습니다.


🏗️ 아키텍처 개요

  • 런타임 레지스트리 – 도메인은 manifest.ts에서 탐지됩니다. 파일을 추가하면 자동으로 새 도메인이 생성됩니다.
  • 지연 초기화 – 도구 핸들러는 첫 호출 시에만 인스턴스화되어 시작 속도를 빠르게 유지합니다.
  • 하이브리드 검색 – search_tools는 BM25 + 선택적 벡터 랭킹을 사용하여 전체 스키마를 로드하지 않고도 올바른 도구를 찾습니다.
  • 도구 주석 – 각 도구는 readOnlyHint, destructiveHint, idempotentHint, openWorldHint를 선언하여 더 안전한 에이전트 오케스트레이션을 구현합니다.
  • 전송 대칭성 – stdio와 Streamable HTTP는 동일한 도구 인터페이스를 노출합니다. 후자는 세션을 다중화하고 재연결 후 상태를 복구합니다.

📦 소스에서 빌드/실행

# 필수 조건
#   Node 22.22.2+   pnpm 10.x
pnpm install          # 의존성 설치(필요한 경우 제외하고 선택적 런타임은 생략)
pnpm build            # TypeScript 컴파일
pnpm start            # 서버 실행 (stdio 모드)
# 또는
pnpm daemon           # HTTP 데몬 실행

기타 스크립트:

  • pnpm dev – 감시 모드 개발.
  • pnpm check – 린트, 포맷, 타입 체크 및 생성된 메타데이터 검증.
  • pnpm test / pnpm test:e2e – 단위 테스트 및 엔드투엔드 테스트 스위트.

📄 라이선스

AGPL-v3 (LICENSE 참조).


결론: @jshookmcp/jshook은 경량 MCP 인터페이스를 통해 LLM 에이전트가 구동할 수 있는 풀스택 확장형 리버스 엔지니어링 플랫폼입니다. 브라우저 자동화부터 저수준 바이너리 분석까지 모든 기능을 제공하면서 토큰 사용량을 제어할 수 있습니다.

관련

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