
idalib 기반의 AI 지원 바이너리 분석을 위한 헤드리스 IDA Pro MCP 서버
macOS 및 Linux에서 바이너리 분석을 위한 헤드리스 IDA CLI 및 스킬 우선(skill-first) 툴킷.
ida-cli는 런타임 백엔드를 자동 선택하고, 필요 시 로컬 서버를 자동 시작하며, 플랫 CLI, stdio MCP 전송(transport), Streamable HTTP MCP 전송(transport)으로 동일한 표면(surface)을 노출합니다.
ida-cli 바이너리(단일 실행 파일에 클라이언트 + 서비스 포함)ida-cli 스킬(skill/SKILL.md)기본 워커 / 라우터 서비스 계층은 CLI에 의해 자동으로 시작되고 종료됩니다. 실제로 장기 실행되는 외부 접근 가능 서비스가 필요할 때만 serve / serve-http를 명시적으로 실행하면 됩니다.
백엔드 선택은 probe-runtime에 의해 런타임에 이루어집니다. 번들된 네이티브 계층이 SDK에 링크되어 있으므로 빌드에는 여전히 IDA SDK가 필요합니다. 런타임 시 CLI는 IDADIR 또는 정규화된(normalized) 일반 설치 경로에서 IDA 자체를 엽니다.
지원되는 IDA 9.x 런타임에서 ida-cli는 다음을 수행할 수 있습니다:
.i64 데이터베이스를 재사용합니다read_* 및 convert_number 헬퍼를 적용합니다run_script를 통해 IDAPython 스니펫을 실행합니다미해결 항목: 일부 쓰기 중심(write-heavy) 및 고급 타입 편집 작업은 idat-compat에서 아직 부분적으로만 지원됩니다. 생성된 도구 목록은 docs/TOOLS.md를 참조하세요.
기본 진입점은 수동 CLI 설치가 아닌 ida-cli 스킬입니다.
# list the skill exposed by this repository
npx -y skills add https://github.com/cpkt9762/ida-cli --list
# install the ida-cli skill for Codex
npx -y skills add https://github.com/cpkt9762/ida-cli --skill ida-cli --agent codex --yes --global
설치 후 스킬은 자체 부트스트랩 래퍼를 제공합니다:
~/.agents/skills/ida-cli/scripts/ida-cli.sh --help
~/.agents/skills/ida-cli/scripts/ida-cli.sh probe-runtime
~/.agents/skills/ida-cli/scripts/ida-cli.sh --path /path/to/binary list-functions --limit 20
ida-cli가 없으면 래퍼는 명령을 전달하기 전에 저장소 설치 프로그램을 통해 이를 설치합니다.
스킬을 거치지 않고 독립 실행형 CLI를 원하는 경우에만 사용하세요.
curl -fsSL https://raw.githubusercontent.com/cpkt9762/ida-cli/master/scripts/install.sh | bash -s -- --add-path
유용한 변형:
# install a specific release
curl -fsSL https://raw.githubusercontent.com/cpkt9762/ida-cli/master/scripts/install.sh | bash -s -- --tag v0.9.3 --add-path
# build directly from a branch or ref
curl -fsSL https://raw.githubusercontent.com/cpkt9762/ida-cli/master/scripts/install.sh | bash -s -- --ref master --build-from-source --add-path
참고:
~/.local/bin/ida-cli에 배치합니다.--add-path는 해당 bin 디렉터리를 셸 rc 파일에 추가합니다.IDASDKDIR 또는 IDALIB_SDK가 설정되지 않았고 로컬 빌드가 필요한 경우, 설치 프로그램은 오픈소스 HexRaysSA/ida-sdk를 자동으로 클론합니다.ida-cli를 설치하거나 실행하기 전에 IDADIR을 명시적으로 export하세요.git clone https://github.com/cpkt9762/ida-cli.git
cd ida-cli
export IDADIR="/Applications/IDA Professional 9.4.app/Contents/MacOS" # or a Linux install
export IDASDKDIR="/path/to/ida-sdk" # root or ida-sdk/src
cargo build --bin ida-cli
./target/debug/ida-cli --help
ida-cli는 클라이언트 우선(client-first)입니다. 모든 클라이언트 하위 명령은 임의의 포트에 바인딩된 로컬 Streamable-HTTP 서버를 자동 시작하고, 검색을 위해 /tmp/ida-cli.socket을 작성합니다:
./target/debug/ida-cli --path /path/to/sample.bin list-functions --limit 20
./target/debug/ida-cli --path /path/to/sample.bin decompile --addr 0x140001000
./target/debug/ida-cli --path /path/to/sample.bin raw '{"method":"get_xrefs_to","params":{"address":"0x140001000"}}'
첫 번째 인수가 서비스 하위 명령(serve, serve-http, serve-worker, probe-runtime)인 명령은 대신 서비스 모드로 진입합니다:
./target/debug/ida-cli serve # stdio MCP transport
./target/debug/ida-cli serve-http --bind 127.0.0.1:8765
./target/debug/ida-cli probe-runtime
백엔드 프로브 출력 예시:
{"runtime":{"major":9,"minor":1,"build":250226},"backend":"idat-compat","supported":true,"reason":null}
{"runtime":{"major":9,"minor":4,"build":260610},"backend":"native-linked","supported":true,"reason":null}
전체 CLI 표면은 skill/references/cli-tool-reference.md를 참조하세요.
IDADIR를 통한 IDA 설치(런타임 지원은 IDA 9.0부터)IDASDKDIR 또는 IDALIB_SDK를 통한 IDA SDKSDK 경로는 다음 레이아웃 중 하나를 가리킬 수 있습니다:
/path/to/ida-sdk/path/to/ida-sdk/srcidat-compatIDA 9.0–9.2 호환성 백엔드입니다. idat를 외부 프로세스로 실행(shell out)하여 짧은 IDAPython 스크립트를 실행하고 구조화된 JSON을 CLI 런타임으로 반환합니다.
native-linkedIDA 9.3+ 백엔드입니다. 번들된 idalib 라인에 링크하고 데이터베이스를 프로세스 내(in-process)에서 엽니다.
~/.ida/idb/~/.ida/logs/server.log~/.ida/server.sock~/.ida/server.pid/tmp/ida-cli.socket/tmp/ida-cli-out/GitHub Actions는 오픈소스 HexRaysSA/ida-sdk를 대상으로 호스팅 러너에서 트리를 컴파일하고 테스트하므로 CI는 어떤 개인 머신 레이아웃에도 의존하지 않습니다.
현재 워크플로 동작:
master에 대한 푸시 및 풀 리퀘스트는 검증을 실행합니다v0.9.3 같은 태그가 지정된 푸시는 Linux 및 macOS용 릴리스 아카이브를 빌드합니다install.sh와 플랫폼 아카이브를 첨부합니다릴리스 바이너리는 SDK 스텁을 대상으로 빌드됩니다. 설치 시 install.sh가 생성한 런처는 ida-cli를 호출하기 전에 IDADIR 또는 정규화된 일반 설치 경로 집합을 통해 로컬 IDA 런타임을 확인합니다.
MIT
| IDA 버전 | 백엔드 | 비고 |
|---|
< 9.0 | unsupported | — |
9.0 – 9.2 | idat-compat | idat + IDAPython을 외부 프로세스로 실행 |
9.3+ | native-linked | 번들된(vendored) idalib에 링크 |