
IDAssist v2.3.0
IDA Pro용 AI 기반 리버스 엔지니어링 플러그인
IDAssist
AI 기반 IDA Pro 리버스 엔지니어링 플러그인
Author: Jason Tang
설명
IDAssist는 LLM 기반 분석을 IDA 인터페이스에 직접 통합하는 IDA Pro 플러그인입니다. 구성 가능한 LLM 공급자, 의미론적 지식 그래프, RAG 문서 검색을 통해 AI 지원 바이너리 리버스 엔지니어링을 제공하며, 다양한 LLM 공급자를 지원합니다.
Python과 PySide6로 제작된 IDAssist는 IDA Pro 9.0+ 내에서 도킹 가능한 패널로 실행되며, LLM 공급자(OpenAI, Anthropic, Ollama, LiteLLM 등)와 통신하여 함수 분석, 이름 변경 제안, 코드에 대한 질문 응답, 전체 바이너리의 검색 가능한 지식 그래프 구축을 수행합니다.

핵심 기능
함수 설명 — 디컴파일된 함수에 대한 상세한 자연어 설명을 생성하며, 위험 수준, 활동 프로필, 보안 플래그, API 탐지를 포함한 자동 보안 분석을 제공합니다.
대화형 쿼리 채팅 — 지속적인 채팅 기록을 통해 바이너리에 대해 질문하세요. 컨텍스트 매크로(#func, #addr, #line, #range)를 사용하여 함수 코드, 주소 또는 디스어셈블리 범위를 쿼리에 삽입할 수 있습니다.
자동화된 작업 — 함수, 변수, 유형에 대한 AI 기반 이름 변경 제안. 신뢰도 점수가 포함된 테이블에서 제안된 변경 사항을 검토하고 선택한 작업을 IDB에 적용합니다.
의미론적 지식 그래프 — 바이너리의 함수, 호출 관계, 데이터 흐름, 보안 특성에 대한 지식 그래프를 구축하고 탐색합니다. 시각적 그래프 렌더링, 의미론적 검색, 커뮤니티 탐지를 포함합니다.
RAG 문서 검색 — 참조 문서(.txt, .md, .rst, .pdf)를 업로드하고 LLM 쿼리 중 컨텍스트로 사용합니다. Whoosh 인덱싱을 통한 하이브리드 텍스트+벡터 검색을 지원합니다.
SymGraph 통합 — 함수 이름, 변수 이름, 유형, 그래프 데이터를 SymGraph 협업 플랫폼에 푸시 및 풀합니다. 풀에 대한 충돌 해결 기능이 포함된 다단계 마법사를 제공합니다.
설정 관리 — 여러 LLM 및 MCP 공급자를 구성하고, SymGraph API 자격 증명을 관리하며, 시스템 프롬프트를 사용자 정의하고, 데이터베이스 경로를 설정합니다.
고급 기능
ReAct 에이전트
Query 탭은 자율적인 ReAct(추론 + 행동) 에이전트 모드를 지원합니다. 활성화되면 LLM이 조사 전략을 계획하고, 정보 수집을 위해 도구를 실행하며, 결과를 반영하고, 포괄적인 답변을 종합합니다. 이 모든 과정이 여러 추론 라운드에 걸쳐 자동으로 수행됩니다.
확장 사고
LLM이 응답하기 전에 "생각"하는 정도를 제어하도록 추론 노력 수준을 구성합니다.
| 레벨 | 사고 예산 | 적합한 용도 |
|---|---|---|
| 없음 | 비활성화 | 빠르고 간단한 쿼리 |
| 낮음 | ~2K 토큰 | 간단한 분석 |
| 보통 | ~10K 토큰 | 중간 복잡도 |
| 높음 | ~25K 토큰 | 심층 분석, 복잡한 코드 |
MCP 통합
IDAssist는 외부 MCP 서버에 연결하여 도구 기반 LLM 상호 작용을 지원합니다. 모델은 추론 중에 함수를 프로그래밍 방식으로 검사하고, 디스어셈블리를 읽고, 상호 참조를 질의하고, IDB를 수정할 수 있습니다. URL 기반 MCP 서버(SSE 또는 Streamable HTTP)와 로컬 CLI 명령으로 시작된 stdio 기반 MCP 서버를 모두 지원합니다. 또한 IDAssist는 외부 MCP 서버 없이 함수 호출을 위한 내장 내부 도구를 제공합니다.
함수 호출
도구 호출을 지원하는 LLM 공급자는 대화 중간에 IDA 분석 함수를 호출할 수 있어, 수동 개입 없이 반복적인 조사가 가능합니다.
RLHF 피드백
설명 및 쿼리 응답에 대해 긍정/부정 피드백을 제공합니다. 피드백은 로컬에 저장되며 프롬프트 엔지니어링 및 모델 선택 개선에 사용할 수 있습니다.
아키텍처
IDAssist는 MVC(모델-뷰-컨트롤러) 패턴을 따릅니다.
- 뷰 (
src/views/) — 사용자 상호 작용 시 신호를 방출하는 PySide6 탭 위젯 - 컨트롤러 (
src/controllers/) — 뷰 신호를 서비스 호출에 연결하고 상태를 관리 - 서비스 (
src/services/) — 비즈니스 로직, LLM 공급자, 데이터베이스 액세스, 그래프 분석 - 내부 도구 (
src/services/internal_tools.py) — LLM 함수 호출을 위한 IDA 특정 도구 정의 - 그래프 도구 (
src/services/graphrag/graphrag_tools.py) — LLM 상호 작용을 위한 의미론적 그래프 읽기/쓰기 도구
주요 설계 원칙:
- 모든 IDA API 호출은
execute_on_main_thread()를 통해 메인 스레드에서 실행 - LLM 응답은 UI에 점진적으로 스트리밍
- 영속성을 위한 로컬 SQLite 데이터베이스(외부 데이터베이스 불필요)
- 스레드 안전 초기화를 갖춘 싱글톤 서비스 레지스트리
빠른 시작
-
플러그인 설치 (권장 — IDA Plugin Manager):
hcli plugin install idassist그러면 플러그인과 해당 Python 종속성이 IDA 환경에 자동으로 설치됩니다.
-
또는 수동 설치 (릴리스 tarball에서):
최신 릴리스 zip을 GitHub Releases에서 다운로드하여 IDA 플러그인 디렉토리에 압축을 풉니다.
Linux / macOS:
unzip IDAssist-*.zip -d ~/.idapro/plugins/Windows:
%APPDATA%\Hex-Rays\IDA Pro\plugins\에 zip 압축을 풉니다.그런 다음 IDA에 번들된 Python(시스템 Python이 아님)을 사용하여 종속성을 설치합니다.
Linux / macOS:
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssist/requirements.txtWindows:
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssist\requirements.txt"<IDA_INSTALL_DIR>를 IDA Pro 설치 경로(예:/opt/idapro-9.0또는C:\Program Files\IDA Pro 9.0)로 바꾸십시오.팁:
IDAUSR환경 변수를plugins/하위 디렉토리를 포함하는 사용자 정의 디렉토리로 설정할 수도 있습니다. -
IDAssist 열기: IDA Pro를 실행하고 바이너리를 연 다음,
Ctrl+Shift+A를 누르거나(또는 Edit > Plugins > IDAssist) 엽니다. -
공급자 구성: Settings 탭으로 이동하여 LLM Providers에서 Add를 클릭하고 원하는 공급자를 구성합니다.
-
함수 분석: 원하는 함수로 이동하여 Explain 탭을 클릭하고 Explain Function을 누릅니다.
자세한 설정 지침은 Getting Started를 참조하세요.
LLM 공급자 설정
IDAssist는 다음 공급자 유형을 지원합니다.
| 유형 | 인증 방법 | 비고 |
|---|---|---|
anthropic_platform | API 키 | Anthropic API 직접 호출 |
anthropic_oauth | OAuth (브라우저) | 브라우저 기반 인증 |
anthropic_claude_cli | 로컬 CLI | claude CLI 바이너리 사용 |
bedrock | AWS 자격 증명 | AWS Bedrock Converse API 직접 호출 |
openai_platform | API 키 | OpenAI API 직접 호출 |
openai_oauth | OAuth (브라우저) | 브라우저 기반 인증 |
ollama | 없음 (로컬) | 자체 호스팅 모델 |
litellm | 프록시 URL | 다중 공급자 프록시 |
권장 모델
| 공급자 | 모델 | 장점 |
|---|---|---|
| Anthropic | claude-sonnet-4-6 | 강력한 코드 분석, 확장 사고 |
| OpenAI | gpt-5.3-codex | 빠르고 좋은 일반 분석 |
| Ollama | qwen2.5-coder:32b | 로컬, API 키 불필요 |
의미 그래프 사용
의미 그래프 탭은 바이너리의 지식 그래프를 제공합니다.
- ReIndex Binary — 함수 구조, 호출 그래프 및 상호 참조 추출
- Semantic Analysis — 각 함수에 대한 LLM 요약 생성
- Security Analysis — 취약점 패턴 및 보안 관련 API 탐지
- Network Flow — 호출 그래프 전반의 네트워크 작업 추적
- Community Detection — 관련 함수를 모듈로 그룹화
List View(호출자, 호출 수신자, 에지, 플래그), Visual Graph(N-홉 확장이 가능한 대화형 노드 다이어그램) 또는 Search(의미 검색, 유사 함수, 호출 컨텍스트 등 7가지 쿼리 유형)를 통해 그래프를 탐색할 수 있습니다.
컨텍스트 메뉴 작업
디스어셈블리 또는 의사 코드 뷰에서 마우스 오른쪽 버튼을 클릭하여 다음에 액세스합니다.
| 작업 | 단축키 | 효과 |
|---|---|---|
| 함수 설명 | Ctrl+Shift+E | Explain 탭을 열고 설명 생성 |
| 선택 항목에 대해 질문 | Ctrl+Shift+Q | #func 컨텍스트로 Query 탭 열기 |
| 이름 변경 제안 | — | Actions 탭을 열고 제안 생성 |
요구 사항
- IDA Pro 9.0+ (Python 3 및 PySide6 포함)
- Hex-Rays 디컴파일러 (의사 코드 기능에 권장)
requirements.txt에 나열된 Python 패키지
문서
- 문서 인덱스
- 시작하기
- 탭 참조: Explain | Query | Actions | Semantic Graph | RAG | Settings
- 워크플로: Explain | Query | Semantic Graph
홈페이지
라이선스
자세한 내용은 LICENSE 파일을 참조하세요.