Eleven

Eleven

Приложение для реверс-инжиниринга на macOS, в центре которого агенты.

[English](README.md) · [简体中文](README_zh.md) · [繁體中文](README_zh-TW.md) · [日本語](README_ja.md) · [한국어](README_ko.md) · [Türkçe](README_tr.md) · **Русский** · [Tiếng Việt](README_vi.md) · [ไทย](README_th.md) · [Deutsch](README_de.md) · [Español](README_es.md) · [Français](README_fr.md) · [Українська](README_uk.md) · [Polski](README_pl.md) · [Português (Brasil)](README_pt-BR.md) · [العربية](README_ar.md) · [فارسی](README_fa.md) · [Bahasa Indonesia](README_id.md) · [Italiano](README_it.md)

Eleven home screen

Eleven это приложение для реверс-инжиниринга, построенное вокруг агентов. Загрузите приложение, бинарный файл, шейдер или модель и спросите, что они делают. Любой агент, говорящий на [Agent Client Protocol](https://agentclientprotocol.com), может читать код, переходить по ссылкам, переименовывать функции, оставлять заметки и предлагать патчи, а вы наблюдаете за этим и подтверждаете изменения в том же окне. Анализ выполняется в [Ghidra](https://ghidra-sre.org) через [REA](https://github.com/morluto/rea). Интерфейс это React, отрисовываемый нативно на GPUI с помощью [GPUIX](https://www.npmjs.com/package/@gpuix/react). ## Возможности - **Свой агент.** Aster, Claude, Codex, Gemini, Cursor, Copilot, OpenCode и любой другой ACP-агент. Запускайте несколько на одном проекте, каждый в своём чате. - **Агенты управляют окном.** Eleven предоставляет собственные инструменты MCP, так что агент может открыть функцию, переключить представление, переименовать, добавить заметку и предложить патч. - **Контроль остаётся за вами.** Каждое изменение, ваше или агента, записывается вместе с автором и может быть отменено. Байтовые патчи от агентов приходят как предложения, которые вы принимаете или отклоняете. - **Mach-O, ELF и PE.** Функции, псевдокод, ассемблер, граф потока управления, перекрёстные ссылки, строки, сегменты и hex. - **Проекты.** Проект это одно приложение или один бинарный файл. Его чаты, переименования, закладки, заметки и патчи сохраняются при повторном открытии. - **Патчинг.** Редактируйте байты по адресу и записывайте пропатченную копию. Оригинал никогда не изменяется. - **Сравнение сборок.** Сравнивайте две сборки по функциям и смотрите, что изменилось в псевдокоде. - **Отладка.** Запускайте программу под LLDB, ставьте точку останова на функции, которую изучаете, выполняйте шаги и читайте локальные переменные. - **Шейдеры, модели и профили GPU.** Шейдеры Metal и файлы ML-моделей открываются в рабочей среде и связаны с кодом, который их загружает. Профилируйте с помощью Instruments. - **Плейбуки.** Встроенные навыки, такие как первый осмотр, именование функций, трассировка функции и карта сети, работают с любым агентом. - **Экспорт.** Псевдокод, ассемблер и списки классов Objective-C. ## Установка Eleven работает на macOS 14 или новее на Apple Silicon. ```sh curl -fsSL https://raw.githubusercontent.com/Zfinix/eleven/main/install.sh | sh ``` Эта команда устанавливает `Eleven.app` в `/Applications`. Сборки пока не нотаризованы, поэтому установщик сам снимает карантин загрузки. Eleven также требует: - **Ghidra 12.x.** Скачайте с [ghidra-sre.org](https://ghidra-sre.org) и распакуйте в `~/.local/share` или `~/Applications`, либо задайте `GHIDRA_INSTALL_DIR`. - **JDK 21 или новее.** Подойдёт `brew install openjdk@21`. Eleven находит его сам. - **Агент.** Выберите одного при первом запуске. Eleven сам установит адаптеры ACP, когда они понадобятся. ## Сборка из исходников Понадобятся [Bun](https://bun.sh), Node 20 или новее, Ghidra и JDK как выше, а также копия REA 6.x рядом с этим репозиторием (`../rea`) или `ELEVEN_REA`, указывающая на неё. ```sh git clone https://github.com/Zfinix/eleven git clone https://github.com/Zfinix/rea cd eleven/app bun install bun run dev ``` | Команда | Что делает | | --- | --- | | `bun run dev [file]` | Запускает приложение с горячей перезагрузкой, при необходимости открывая файл | | `bunx tsc --noEmit --noUnusedLocals` | Проверяет типы в приложении, тестах и скриптах | | `./script/test` | Запускает набор тестов по одному файлу за раз | | `./script/bundle-macos` | Собирает `build/Eleven.app` | | `./script/package` | Собирает, подписывает и упаковывает релиз в zip | ## Переменные окружения Все они необязательны. Eleven сам находит обычные места установки. | Переменная | Назначение | | --- | --- | | `GHIDRA_INSTALL_DIR` | Установка Ghidra, которую нужно использовать | | `JAVA_HOME` | JDK для запуска Ghidra | | `ELEVEN_REA` | REA вместо встроенной версии | | `ELEVEN_LLDB_DAP` | `lldb-dap` для отладчика | | `ELEVEN_SUPPORT` | Где Eleven хранит проекты и настройки | | `ELEVEN_SIGN_IDENTITY` | Идентификатор подписи кода для `./script/package` | ## Документация - [Инструменты MCP](docs/mcp-tools.md): все инструменты, доступные агентам в Eleven, что каждый принимает и возвращает, разрешения и приватность. - [Навыки](docs/skills.md): встроенные сценарии и как написать свои. ## Структура репозитория - `app/` это приложение: React и TypeScript на GPUIX. - `crates/` это более ранний прототип на Rust, оставленный для справки. Приложение его не использует. - `launch/` это видео о запуске, сделанное в Remotion. - `install.sh` это установщик. О том, как устроен код и каким правилам он следует, читайте в [AGENTS.md](AGENTS.md). ## Лицензия Eleven распространяется по [Apache License 2.0](LICENSE). Сторонний код в составе пакета перечислен в [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). Логотипы агентов принадлежат их владельцам и приведены только для указания на соответствующих агентов.