
IDA Pro로 Vibe 리버스 엔지니어링: 라이브 가상 테이블을 통해 SQL로 IDA를 사용할 수 있는 인터페이스입니다. 겉모습에 속지 마세요! :)
모든 AI 에이전트에게 컴파일된 바이너리를 이해할 수 있는 능력을 부여합니다.
IDASQL은 Elias Bachaalany가 만든 IDA Pro 데이터베이스용 SQL 인터페이스입니다. 함수, 상호 참조, 문자열, 타입, 임포트, 디스어셈블리, 디컴파일을 아우르는 30개 이상의 가상 테이블을 노출합니다. 코딩 에이전트에서 /idasql 스킬을 사용해 완전히 헤드리스로 작업하거나(에이전트가 백그라운드에서 IDA를 실행해 줍니다), IDA UI를 열고 코딩 에이전트와 협업하여 함께 리버스 엔지니어링할 수 있습니다. IDAPython도 필요 없습니다. 스크립팅도 필요 없습니다. 그저 SQL만 있으면 됩니다.
왜 SQL인가? SQL은 모든 AI 에이전트가 이미 구사하는 보편적인 쿼리 언어입니다. IDASQL은 에이전트에 구애받지 않습니다: Claude, ChatGPT, Copilot, Cursor, 커스텀 에이전트, 또는 에이전트 없이도 가능합니다. SQL 쿼리를 실행할 수 있는 도구라면 무엇이든 바이너리를 분석할 수 있습니다.
IDASQL은 하나 이상의 데이터베이스를 동시에 분석하고, 상호 참조하고, 주석을 전송하는 것을 지원합니다. 할 수 있는 일은 오직 당신의 상상력과 사용하는 모델의 성능에 의해서만 제한됩니다.
IDA Pro는 이미 함수, 문자열, 상호 참조, 타입 등을 기술하는 자체 데이터베이스 형식을 가지고 있습니다. IDASQL은 이러한 내부 구조를 라이브 SQL 가상 테이블에 매핑합니다. 별도의 내보내기나 인덱싱 단계가 없습니다 -- 쿼리는 IDA의 데이터베이스에 직접 실행되며 변경 사항은 실시간으로 반영됩니다.
| 모드 | 시작 방법 | 적합한 용도 |
|---|---|---|
| 독립 실행형 CLI | idasql -s binary.i64 -i | 직접 SQL, 스크립팅, 파이프라인 |
| IDA 플러그인 | IDA의 CLI 드롭다운에서 idasql 선택 | GUI 내부의 SQL, 라이브 데이터베이스 |
| 스킬 워크플로 | 코딩 CLI에서 /idasql:connect | AI 기반 분석 -- 에이전트가 자율적으로 SQL 쿼리를 실행 |
You / Agent --> Natural language or SQL
|
/idasql skills (LLM translates intent to SQL)
|
IDASQL --> IDA database(s)
|
Results --> LLM summarizes & reasons
$ idasql -s WerFaultTool.exe.i64 -q "SELECT * FROM funcs LIMIT 5"
Opening: WerFaultTool.exe.i64...
Database opened successfully.
+------+-------------------------------------------------+------+----------+-------+
| addr | name | size | end_addr | flags |
+------+-------------------------------------------------+------+----------+-------+
| 16 | WerFaultTool.AboutForm::.ctor | 13 | 29 | 4096 |
| 32 | WerFaultTool.AboutForm::Dispose | 30 | 62 | 4096 |
| 64 | WerFaultTool.AboutForm::InitializeComponent | 295 | 359 | 4096 |
| 400 | WerFaultTool.WerFaultGUI::.ctor | 936 | 1336 | 4096 |
| 1344 | WerFaultTool.WerFaultGUI::CreateDynamicControls | 231 | 1575 | 4096 |
+------+-------------------------------------------------+------+----------+-------+
5 row(s)
하나의 명령. 즉각적인 결과. 스크립팅이 필요 없습니다.
IDASQL CLI와 플러그인을 설치한 후, 즐겨 사용하는 코딩 에이전트를 시작하고 프롬프트로 리버스 엔지니어링을 시작하세요. IDASQL은 완전히 헤드리스로 실행됩니다 -- 에이전트가 IDA Pro를 조율합니다: 시작, 분석, 디컴파일, 주석 달기, 저장 -- 또는 IDA GUI 내부에서 호스팅되어 에이전트와 실시간으로 협업할 수 있습니다.
즐겨 사용하는 코딩 에이전트(예: Claude Code)를 열고 다음을 입력하세요:
/idasql:connect Please open sample_malware.exe in the background and let's analyze it together.
에이전트는 IDASQL을 백그라운드에서 헤드리스로 시작합니다. 이 시점부터 데이터베이스와 자연스럽게 대화하세요. 예를 들어:
/idasql:annotations Fully annotate the function I'm looking at, also use the decompiler skill.
모델은 함수를 이해하기 위한 최적의 접근 방식을 자율적으로 추론하고, 함수를 완전히 리버스 엔지니어링하며, 주석을 추가합니다.
작업이 끝나면 에이전트에게 저장하고 종료하도록 요청하세요:
/idasql:connect Please save all databases and shut down IDASQL.
두 개 이상의 데이터베이스를 동시에 작업할 수 있습니다. 에이전트에게 다음과 같이 프롬프트하세요:
/idasql:connect In this folder, there are many *.exe files. Please use parallel agents to open IDASQL in the background and report how many functions each has.
그런 다음 후속 조치를 취하세요:
Tell me, how many strings all these databases have in common?
에이전트는 모든 데이터베이스와 동시에 작업합니다. 데이터베이스 간에 상호 참조하고, 비교하고, 어노테이션을 전송할 수 있습니다.
위의 모든 내용은 IDA GUI에서도 동일하게 작동합니다. 열려 있는 IDA 세션에서 에이전트를 사용하려면:
IDA의 idasql> 프롬프트에서 다음을 입력하세요:
.http start
IDA 출력:
IDASQL HTTP server: http://127.0.0.1:8174
코딩 에이전트에서:
/idasql:connect Let's work with this database: http://127.0.0.1:8174
이제 IDASQL과 IDA UI가 연결되어 함께 작동합니다.
IDA 9.4에서는 답변이 IDA로 바로 연결될 수 있습니다. deep_links 테이블은 모든
함수, 주소, 문자열 또는 타입을 IDA 자체의 Copy Link 형식으로 된 ida:// 링크로
변환하며, 여기에 추가 매개변수인 idb_path(데이터베이스의 전체 경로)를 더합니다.
IDA는 이를 무시하지만, idasql의 클릭 핸들러는 이를 사용하여 올바른 데이터베이스에서
IDA를 시작합니다. 함수 링크는 디컴파일러를 엽니다(디컴파일러가 없으면 디스어셈블리),
다른 링크는 디스어셈블리를 엽니다:
SELECT f.name, dl.uri
FROM funcs f
JOIN deep_links dl ON dl.resource = 'functions' AND dl.addr = f.addr AND dl.view = 'pseudocode'
ORDER BY f.size DESC LIMIT 5;
A coding agent은 이를 클릭 가능한 이름으로 렌더링합니다. 클릭 시 IDA를 열도록 하려면:
idasql link register # handle ida:// links (a replaced handler, such as hcli's, is saved)
idasql link unregister # remove it and restore the saved handler
idasql link open -- "ida:///sample.exe.i64/functions?rva=0x1130&view=pseudocode"
idasql link list # running IDA 9.4 instances and their databases
idasql link open은 데이터베이스를 열고 있는 실행 중인 IDA를 조종합니다. 링크의 정확한
idb_path가 우선하며, 같은 이름의 데이터베이스를 가진 실행 중인 IDA는 해당 파일이
이 머신에 없을 때만 사용됩니다. 어떤 IDA도 그것을 열고 있지 않다면, 데이터베이스에서 IDA를 시작하고(.i64 또는
.idb만), 분석을 기다린 후(--timeout <seconds>, 1에서 3600), 탐색합니다. 실행 중인 인스턴스가 응답하지 않거나
데이터베이스의 압축 해제된 .id0가 존재할 때(IDA가 이미 열고 있을 수 있음) 두 번째 IDA 시작을 거부합니다.
--launch-anyway가 이를 무시합니다.
디코딩된 부분에 제어 문자가 있는 링크는 거부됩니다. --config <file>은 동사 앞에 옵니다
(idasql link --config <file> open ...). IDA 내부에서는
SELECT ida_open_link(uri)가 현재 세션을 탐색합니다.
클릭이 핸들러에 도달하는지는 터미널에 달려 있습니다. Windows Terminal은 사용자 지정 스킴을 열기 전에
safeUriSchemes 설정에 나열되어 있지 않으면 확인을 요청합니다
("safeUriSchemes": ["ida"]).
IDASQL 스킬은 코딩 에이전트가 자연어를 통해 IDA 데이터베이스를 완전히 제어할 수 있게 해줍니다.
allthingsida/idasql-skills 마켓플레이스에서 설치합니다.IDA Pro가 설치되어 있고 그 디렉터리가 PATH에 있어야 합니다 (Windows에서는 ida.exe, macOS/Linux에서는 ida)
idasql을 Releases에서 다운로드합니다. IDA 버전에 맞는 ida92, ida93, 또는 ida94 아티팩트를 선택하세요:
*-plugin.zip은 Windows x86-64, Linux x86-64, macOS ARM64 바이너리를 포함하는 HCLI 호환 플러그인 아카이브입니다.*-cli-manual.zip은 호스트 아키텍처별로 정리된 독립 실행형 CLI 실행 파일을 포함합니다.*-arm64-plugin-manual.zip은 Linux ARM64와, IDA 9.4의 경우 Windows ARM64 수동 설치용 플러그인 바이너리를 포함합니다.플러그인 바이너리는 SDK 버전에 따라 다르므로, ida92, ida93, 또는 ida94 빌드를 다른 IDA 버전과 함께 재사용하지 마세요.
설정 확인: 명령줄에서 idasql --version이 작동해야 합니다
Claude Code 내에서 다음을 실행하세요:
/plugin marketplace add allthingsida/idasql-skills