
Vibe Reverse Engineer with IDA SQL: 라이브 가상 테이블을 통한 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
The source input for chunk 3 is empty. Please provide the Markdown content you'd like translated.```
$ 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 UI 사용하기
위의 모든 기능은 IDA GUI에서도 동일하게 작동합니다. 열린 IDA 세션에서 에이전트를 사용하려면:
1. IDA의 `idasql>` 프롬프트에 다음을 입력합니다: ```
.http start
이제 IDASQL과 IDA UI가 연결되어 함께 작동합니다.
IDASQL 스킬은 코딩 에이전트가 자연어를 통해 IDA 데이터베이스를 완전히 제어할 수 있게 해줍니다.
allthingsida/idasql-skills 마켓플레이스에서 설치합니다.ida.exe, macOS/Linux의 경우 ida)idasql --version이 작동해야 합니다Claude Code 안에서 다음을 실행합니다:```text /plugin marketplace add allthingsida/idasql-skills
그런 다음 해당 마켓플레이스에서 `idasql` 플러그인을 설치합니다. Codex 및 기타 설치 경로는 [idasql-skills README](https://github.com/allthingsida/idasql-skills#installation)를 참조하세요.
#### 스킬
| 스킬 | 설명 |
|-------|-------------|
| `connect` | IDA 데이터베이스에 연결: CLI, HTTP 서버, 세션 부트스트랩, 스킬 라우팅, 전역 계약. |
| `disassembly` | IDA 디스어셈블리 쿼리: 함수, 세그먼트, 명령어, 블록, 피연산자, 그래프. |
| `data` | IDA 문자열, 바이트 및 바이너리 데이터 쿼리: 검색, 재구축, 바이트 패턴. |
| `xrefs` | IDA 상호 참조 분석: 호출자, 피호출자, 임포트, 데이터 참조, grep 검색. |
| `decompiler` | IDA 함수 디컴파일: 의사 코드, ctree AST, 지역 변수, 레이블. |
| `annotations` | IDA 데이터베이스 편집: 주석, 이름 변경, 타입, 북마크, enum/구조체 렌더링. |
| `types` | IDA 타입 시스템: 구조체, 공용체, 열거형, typedef, parse_decls 생성/수정/적용. |
| `debugger` | IDA 디버거: 중단점, 바이트 패칭, 조건, 패치 인벤토리. |
| `storage` | netnode_kv를 통한 IDA 데이터베이스의 영구 키-값 저장소. |
| `idapython` | idasql을 통한 IDAPython 실행: 스니펫, 샌드박스, 출력 캡처. |
| `functions` | idasql SQL 함수 전체 참조 카탈로그. |
| `analysis` | IDA 바이너리 분석: 트리아지, 보안 감사, 암호화/네트워크 탐지, 다중 테이블 쿼리. |
| `resource` | IDA 바이너리 재소싱: 재귀적 주석, 구조 복구, 타입 재구성. |
| `ui-context` | 실시간 IDA UI 컨텍스트 캡처: 화면, 선택 항목, 위젯 포커스, 주소 앵커. |
#### 예제 프롬프트```
/idasql:analysis analyze this binary; tell me the most called functions.
/idasql:data find functions that reference "password" strings and rank by xrefs.
/idasql:xrefs show callers of CreateFileW and summarize error handling.
/idasql:data identify suspicious hardcoded URLs and the functions that reference them.
/idasql 스킬은 코딩 CLI에서 분석을 구동합니다. IDAPython 스크립팅이 필요 없습니다.
idasql v0.0.18 - SQL interface to IDA databases
Usage: idasql -s [-q ] [-f ] [-i] [--export ]
Options: -s IDA database (.idb/.i64) OR raw binary (.exe/.dll/firmware/etc.) — raw binaries trigger fresh idalib analysis and string-list rebuild — legacy 32-bit .idb files upgrade to .i64 and require an explicit reopen --token Auth token for HTTP/MCP server mode (if server requires it) -q Execute SQL query or semicolon-separated script -f Execute SQL from file -i Interactive REPL mode -w, --write Save database on exit (persist changes) --export Export tables to SQL file (local mode only) --export-tables=X Tables to export: * (all, default) or table1,table2,... --http [port] Start HTTP REST server (default: 8080, local mode only) --bind Bind address for HTTP/MCP server (default: 127.0.0.1) --mcp [port] Start MCP server (default: random port, use in -i mode) Or use .mcp start in interactive mode -h, --help Show this help --version Show version