
Agent-ориентированный CLI, обёртывающий IDA Pro IDALib для не сохраняющего состояние анализа бинарных файлов с выводом в JSON: дизассемблирование, декомпиляция Hex-Rays, CFG, перекрёстные ссылки, строки, а также пакетная или параллельная обработка IDB.
Agent-native CLI для IDA Pro IDALib — каждая команда принимает один флаг -d/--db, каждый ответ — JSON.
-d/--db <PATH> (бинарный файл или .i64); никакого демона, никакого учёта сессий.Требования: IDA Pro 9.1 (лицензированный, запущенный хотя бы раз) · распакованный IDA 9.1 SDK (только для сборки) · Rust + LLVM/Clang (требования bindgen)
export IDADIR="/Applications/IDA Professional 9.1.app/Contents/MacOS" # IDA install dir
export IDASDKDIR=/path/to/idasdk91 # unpacked SDK (absolute path!)
git clone <this-repo> && cd idalib-cli
cargo install --path .
idalib-cli info # ✅ verify tool version, IDA version, license
SDK нужен только во время сборки; бинарный файл связывается с вашими локальными библиотеками IDA во время выполнения. Проверки при разработке без SDK:
cargo test --no-default-features --features stub-idalib.
Каждой команде нужен -d/--db <PATH> — файл IDB (.i64) или бинарный файл (IDB
создаётся рядом с ним при первом использовании). Адреса принимаются в виде 0x401000 или
401000. Вывод всегда один JSON-документ; ошибки идут в stderr с
ненулевым кодом возврата.
| Команда | Описание |
|---|---|
idalib-cli -d <bin-or-i64> db info | Разрешённые пути, состояние IDB, размер |
| Команда | Описание |
|---|---|
idalib-cli -d <db> meta | Тип файла, компилятор, разрядность |
idalib-cli -d <db> processor | Информация о процессоре |
idalib-cli -d <db> segments | Все сегменты |
idalib-cli -d <db> segments-by-range -a <ea> | Сегмент, содержащий адрес |
idalib-cli -d <db> functions [-u] | Список функций (-u = пропустить lib/thunk) |
idalib-cli -d <db> function -a <ea> | Одна функция: CFG, блоки, перекрёстные ссылки |
idalib-cli -d <db> disasm -a <ea> [-n N] | Дизассемблировать N инструкций (по умолчанию 8) |
idalib-cli -d <db> decompile -a <ea> [--all-blocks] | Псевдокод Hex-Rays |
idalib-cli -d <db> insn -a <ea> | Одна инструкция (+ классификация group/is_call/is_ret) |
idalib-cli -d <db> strings | Список строк |
idalib-cli -d <db> names | Именованные локации |
idalib-cli -d <db> xrefs [-a <ea>] [--all] [--from] | Перекрёстные ссылки на адрес (по умолчанию) или из него (--from), либо все |
idalib-cli -d <db> find --text <s> | Поиск текстовых совпадений |
idalib-cli -d <db> find --imm 0x1337 | Поиск совпадений непосредственных значений |
idalib-cli -d <db> find --pattern 554889e5 | Поиск шестнадцатеричного байтового шаблона |
idalib-cli -d <db> bytes -a <ea> [-n N] [--width byte|word|dword|qword] | Сырые байты (hexdump) или целые числа little-endian |
idalib-cli -d <db> entries | Точки входа |
| Команда | Описание |
|---|---|
idalib-cli -d <db> comments get|set|append|remove -a <ea> [-c "text"] | Комментарии |
idalib-cli -d <db> bookmarks list|add|get|remove -a <ea> [-d "desc"] | Закладки |
idalib-cli -d <db> rename -a <ea> -n <name> | Переименовать функцию / метку данных |
idalib-cli -d <db> set-type -a <ea> -t "int f(int, char *);" | Применить объявление типа C (прототип функции / тип данных) |
idalib-cli -d <db> signatures --make [--only-pat] | Сгенерировать FLIRT-сигнатуры |
| Команда | Описание |
|---|---|
idalib-cli -d <db> batch -- <op> [<op>...] | Последовательные операции, IDB открывается один раз |
idalib-cli parallel -d <list|glob> [--jobs N] -- <op> | Одна операция на множестве БД, отдельный подпроцесс для каждой |
idalib-cli info [--version|--ida|--all] | Версия инструмента / IDA, лицензия |
🔎 Триаж неизвестного бинарного файла
idalib-cli -d ./sample meta # what is it? (filetype/compiler/bitness)
idalib-cli -d ./sample segments # memory layout
idalib-cli -d ./sample strings # quick hints
idalib-cli -d ./sample functions -u # user code only
🔍 Углублённое изучение функции
idalib-cli -d ./sample function -a 0x401000 # CFG + blocks + xrefs
idalib-cli -d ./sample decompile -a 0x401000 # read the pseudo-code
idalib-cli -d ./sample disasm -a 0x401000 -n 20 # or the raw instructions
idalib-cli -d ./sample xrefs -a 0x401000 --all # who calls it
📝 Аннотирование находок (сохраняется между процессами/агентами)
idalib-cli -d ./sample comments set -a 0x401000 -c "parses config, see 0x402100"
idalib-cli -d ./sample bookmarks add -a 0x401000 -d "entry point"
idalib-cli -d ./sample comments get -a 0x401000 # verify
⚡ Массовый анализ множества образцов
# first pass: create IDBs + overview for every sample
idalib-cli parallel -d "./samples/*.bin" -- "batch -- meta functions -u"
# deep pass: decompile one hot function in every IDB
idalib-cli parallel -d "./samples/*.i64" --jobs 8 -- "decompile -a 0x401000"
🔎 Поиск и просмотр сырых данных
idalib-cli -d ./sample find --text "MAGIC" # string hits
idalib-cli -d ./sample find --imm 0x1337 # immediate-value hits
idalib-cli -d ./sample find --pattern 554889e5 # byte pattern (prologue)
idalib-cli -d ./sample bytes -a 0x401000 -n 32 # hexdump
idalib-cli -d ./sample bytes -a 0x401000 --width qword -n 4
idalib-cli -d ./sample xrefs -a 0x401000 --from # outgoing refs (calls)
idalib-cli -d ./sample rename -a 0x401000 -n decrypt # label it
idalib-cli -d ./sample set-type -a 0x401000 -t "int f(const char *, int);" # set prototype
🤖 Пакетная инспекция, удобная для агентов (один JSON-документ)
idalib-cli -d ./sample batch -- "meta" "segments" "functions -u" "decompile -a 0x401000"
Руководство по рабочему процессу агента: skills/idalib-cli/SKILL.md; запускаемый
сквозной пример в examples/workflow.sh.
decompile){
"id": 7,
"start": "0x401000",
"end": "0x401080",
"size": 128,
"name": "main",
"blocks": 3,
"decompiled": true,
"pseudocode": "int __cdecl main(...) { ... }"
}
Необязательный файл ~/.idapro/idalib-cli/config.toml (базовый каталог: $IDALIB_CLI_HOME):