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 에이전트가 구동할 수 있는 풀스택 확장형 리버스 엔지니어링 플랫폼입니다. 브라우저 자동화부터 저수준 바이너리 분석까지 모든 기능을 제공하면서 토큰 사용량을 제어할 수 있습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트