Search
🤖

IDA MCP(작성중)

1) 한 줄 정의

IDA: 분석 대상(바이너리/DB)을 열고 디스어셈블/분석/스크립팅을 제공하는 툴
MCP 서버(IDA MCP Server): LLM이 “도구(tool)”처럼 IDA 기능을 호출할 수 있게 IDA 안/옆에서 API(툴)로 노출하는 브리지
MCP 클라이언트: LLM이 도구를 호출할 수 있게 MCP 서버에 연결하는 앱/에이전트(예: Claude Desktop, Cursor, VS Code 에이전트)
LLM: 실제 추론/설명/코드생성/워크플로우 오케스트레이션을 하는 모델(Claude/GPT/Gemini/로컬 qwen 등)
핵심: LLM은 IDA에 “직접 붙는 게 아니라” MCP 클라이언트를 통해 MCP 서버(IDA)에 붙는다.

2) 전체 구조 (데이터 흐름)

[LLM] ↔ [MCP 클라이언트(에이전트)] ↔ [IDA MCP 서버] ↔ [IDA Pro](Cursor/Claude Desktop 등)
Plain Text
복사

예: "함수 이름 자동 정리 + 의심 로직 설명"

1.
LLM이 "이 바이너리의 네트워크 초기화 흐름 찾아줘" 요청을 받음
2.
MCP 클라이언트가 MCP 서버에 list_functions, get_function_decomp, xrefs_to 같은 툴 호출
3.
MCP 서버가 IDA/IDAPython/SDK로 실행해서 결과 반환
4.
LLM이 반환된 코드/메타데이터를 요약/설명/리네이밍 제안
5.
필요하면 다시 rename_function, set_comment 같은 툴 호출로 IDA에 반영

3) 무엇이 무엇을 결정하나?

A. IDA 라이선스가 결정하는 것

IDA를 자동화/플러그인/IDAPython로 제어할 수 있는지(= MCP 서버를 올릴 수 있는지)
현재는 IDA Pro만 가능(정책/지원 범위)

B. LLM 종류(Claude/GPT/qwen 등)를 결정하는 것

어떤 MCP 클라이언트(에이전트)를 쓰는지가 결정
Cursor가 지원하는 모델/프로바이더 범위
Claude Desktop이 붙는 Claude 모델
VS Code 에이전트(Cline/Continue 등)가 지원하는 프로바이더(OpenAI/Anthropic/Gemini/Ollama 등)
그래서 "qwen3-8b를 쓰고 싶다"는 건 보통
(1) qwen을 로컬 런타임(Ollama/vLLM/LM Studio 등) 으로 띄우고
(2) 그걸 지원하는 MCP 클라이언트(예: 로컬 모델 연결 가능한 VS Code 에이전트)를 쓰면 해결 가능
⇒ IDA 라이선스 옵션이 “어떤 LLM을 막는다”기보단, MCP 서버로 IDA를 제어할 수 있냐가 포인트.

4) 사용할 수 있는 LLM “종류” 정리

MCP 관점에서 보면 모델은 크게 2개 축으로 나뉜다.

1) 클라우드 LLM

Claude(Anthropic)
GPT(OpenAI)
Gemini(Google)
그 외 (클라이언트가 지원하는 provider)
특징: 설정이 쉽고 성능/컨텍스트가 좋지만, 네트워크/데이터 반출 이슈가 있을 수 있음.

2) 로컬 LLM

qwen3-8b 같은 오픈웨이트 모델
(대개 Ollama/vLLM 등으로 로컬 서빙)
특징: 오프라인/데이터 통제에 강하고 강의 환경(폐쇄망)에도 맞추기 쉬움. 대신 성능/컨텍스트/툴사용 안정성은 모델/서빙 구성에 따라 편차.

5) “IDA MCP 서버”가 보통 제공하는 기능 범주

(서버 구현마다 다르지만, 강의/테스트에서 자주 쓰는 공통 범주)
읽기(Read) 툴: 함수 목록, 심볼, 스트링, 임포트/익스포트, xref, CFG 단서, 디컴파일 결과 조회
쓰기(Write) 툴: 함수/변수 rename, comment, 타입 적용, 구조체 정의 보조, 북마크/마킹
워크플로우 툴: 특정 패턴 검색, 의심 API 사용처 추적, 호출 그래프 기반 후보 함수 리스트업