local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Used to run the MCP server that bridges AI assistants with IDA Pro, enabling remote binary analysis capabilities through a structured API.
Enables execution of Python scripts within IDA Pro for reverse engineering tasks, allowing AI assistants to interact with binary analysis functions through a standardized interface.
Provides the client interface and MCP server implementation for enabling AI assistants to interact with IDA Pro's binary analysis capabilities.
IDA Pro MCP 서버
AI 어시스턴트가 역엔지니어링 및 바이너리 분석 작업을 위해 IDA Pro와 상호 작용할 수 있도록 하는 MCP(모델 컨텍스트 프로토콜) 서버입니다.
개요
이 프로젝트는 AI 어시스턴트와 소프트웨어 리버스 엔지니어링에 널리 사용되는 디스어셈블러 및 디버거인 IDA Pro를 연결하는 다리 역할을 합니다. 이 프로젝트는 세 가지 주요 구성 요소로 구성됩니다.
- IDA Pro 원격 제어 플러그인 (
ida_remote_server.py
): IDA Pro 기능을 원격으로 제어하기 위한 HTTP 서버를 생성하는 IDA Pro 플러그인입니다. - IDA 원격 클라이언트 (
idaremoteclient.ts
): IDA Pro 원격 제어 서버와 상호 작용하기 위한 TypeScript 클라이언트입니다. - MCP 서버 (
index.ts
): AI 어시스턴트에 IDA Pro 기능을 제공하는 모델 컨텍스트 프로토콜 서버입니다.
특징
- AI 어시스턴트에서 IDA Pro의 Python 스크립트 실행
- 바이너리에 대한 정보를 검색합니다.
- 문자열
- 수입품
- 수출
- 기능
- 고급 바이너리 분석 기능:
- 지침에서 즉시 값 검색
- 바이너리에서 텍스트 문자열 검색
- 특정 바이트 시퀀스 검색
- 주소 범위에 대한 분해를 얻으세요
- 표준화된 인터페이스를 통해 IDA Pro 작업을 자동화하세요
- 구성 요소 간 보안 통신
필수 조건
- IDA Pro 8.3 이상
- Node.js 18 이상
- 타입스크립트
예시 사용 ida_remote_server.py
지엑스피1
MCP 서버 사용 예시
설치
1. IDA Pro 원격 제어 플러그인 설치
ida_remote_server.py
IDA Pro 플러그인 디렉토리에 복사합니다.- Windows:
%PROGRAMFILES%\IDA Pro\plugins
- macOS:
/Applications/IDA Pro.app/Contents/MacOS/plugins
- 리눅스:
/opt/idapro/plugins
- Windows:
- IDA Pro를 시작하고 바이너리 파일을 엽니다.
- 플러그인은 자동으로
127.0.0.1:9045
에서 HTTP 서버를 시작합니다.
2. MCP 서버 설치
- 이 저장소를 복제하세요:Copy
- 종속성 설치:Copy
- 프로젝트를 빌드하세요:Copy
- AI 어시스턴트의 MCP 설정 파일에서 MCP 서버를 구성하세요.Copy
용법
MCP 서버를 설치하고 구성하면 AI 어시스턴트에 다음 도구가 제공됩니다.
run_ida_command
IDA Pro Python 스크립트를 실행합니다.
매개변수:
scriptPath
(필수): 실행할 스크립트 파일의 절대 경로outputPath
(선택 사항): 스크립트 출력을 저장할 절대 경로
예:
AI 비서는 이 스크립트를 다음과 함께 사용할 수 있습니다.
검색_즉시_값
이진법 명령어에서 즉각적인 값을 검색합니다.
매개변수:
value
(필수): 검색할 값(숫자 또는 문자열)radix
(선택 사항): 숫자 변환을 위한 기수(기본값: 16)startAddress
(선택 사항): 검색 시작 주소endAddress
(선택 사항): 검색 종료 주소
예:
검색_텍스트
바이너리에서 텍스트 문자열을 검색합니다.
매개변수:
text
(필수): 검색할 텍스트caseSensitive
(선택 사항): 검색 시 대소문자를 구분하는지 여부(기본값: false)startAddress
(선택 사항): 검색 시작 주소endAddress
(선택 사항): 검색 종료 주소
예:
검색_바이트_시퀀스
바이너리에서 특정 바이트 시퀀스를 검색합니다.
매개변수:
bytes
(필수): 검색할 바이트 시퀀스(예: 3개의 NOP의 경우 "90 90 90")startAddress
(선택 사항): 검색 시작 주소endAddress
(선택 사항): 검색 종료 주소
예:
get_disassembly
주소 범위에 대한 디스어셈블리를 가져옵니다.
매개변수:
startAddress
(필수): 분해 시작 주소endAddress
(선택 사항): 분해를 위한 종료 주소count
(선택 사항): 분해할 명령어 수
예:
get_functions
바이너리에서 함수 목록을 가져옵니다.
매개변수:
- 필요 없음
예:
내보내기
바이너리에서 내보내기 목록을 가져옵니다.
매개변수:
- 필요 없음
예:
문자열 가져오기
바이너리에서 문자열 목록을 가져옵니다.
매개변수:
- 필요 없음
예:
IDA Pro 원격 제어 API
IDA Pro 원격 제어 플러그인은 다음과 같은 HTTP 엔드포인트를 제공합니다.
GET /api/info
: 플러그인 정보 가져오기GET /api/strings
: 바이너리에서 문자열을 가져옵니다.GET /api/exports
: 바이너리에서 내보내기 가져오기GET /api/imports
: 바이너리에서 가져오기GET /api/functions
: 함수 목록 가져오기GET /api/search/immediate
: 명령어에서 즉시 값을 검색합니다.GET /api/search/text
: 바이너리에서 텍스트 검색GET /api/search/bytes
: 바이너리에서 바이트 시퀀스를 검색합니다.GET /api/disassembly
: 주소 범위에 대한 디스어셈블리를 가져옵니다.POST /api/execute
: Python 스크립트(JSON/Form) 실행POST /api/executebypath
: 파일 경로에서 Python 스크립트 실행POST /api/executebody
: 원시 본문에서 Python 스크립트 실행
보안 고려 사항
기본적으로 IDA Pro 원격 제어 플러그인은 보안상의 이유로 127.0.0.1
(로컬호스트)에서만 수신 대기합니다. 이로 인해 IDA Pro 인스턴스에 대한 원격 접근이 차단됩니다.
원격 액세스를 허용해야 하는 경우 ida_remote_server.py
에서 DEFAULT_HOST
변수를 수정할 수 있지만 보안에 영향을 미칠 수 있다는 점을 알고 있어야 합니다.
개발
소스에서 빌드
테스트 실행
특허
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 라이선스 파일을 참조하세요.
작가
플로리안 드레흐슬러(@fdrechsler) fd@fdrechsler.com
You must be authenticated.
Tools
AI 어시스턴트가 역엔지니어링 및 바이너리 분석 작업을 위해 IDA Pro와 상호 작용할 수 있도록 하는 모델 컨텍스트 프로토콜 서버입니다.
- Overview
- Features
- Prerequisites
- Installation
- Usage
- IDA Pro Remote Control API
- Security Considerations
- Development
- License
- Author