Материал предназначен для специалистов, которые запускают Claude Code в изолированной среде для анализа собственных APK, бинарных файлов и тестовых целей. Мы разбираем установку reverse-skill, проверку автоматического выбора метода, контроль инструментов, отказ от неразрешённых действий и аудит результатов.
Подходит: для авторизованного анализа собственных APK, бинарных файлов и учебных образцов. Не подходит: для работы по реальным сторонним целям без письменного разрешения — автоматический выбор инструмента не заменяет проверку области работ и ручное подтверждение.
Сначала ограничьте область задачи и права инструментов, затем установите reverse-skill Claude Code и проверьте его на легальных образцах с заранее известным результатом. Минимальный набор проверок — совпадение описания, выбор метода, наличие инструментов, план выполнения и корректный отказ при ошибке или выходе за границы.
Последнее обновление: 10 августа 2026 года. Факты сверены с официальным репозиторием reverse-skill, файлами SKILL.md и актуальной документацией Skills.
Эта статья для трёх групп читателей:
- специалистов по безопасности, которые исследуют APK или бинарные файлы в авторизованной среде;
- разработчиков, поддерживающих Claude Code Skills и проверяющих точность их автоматического запуска;
- команд, которые запускают Agent в удалённой изолированной среде и обязаны сохранять команды, результаты и решения оператора.
Что именно делает reverse-skill
reverse-skill не превращает Claude Code в автономного специалиста, которому можно без ограничений передать любую цель. Его задача уже: сопоставить описание работы с подходящим сценарием, проверить доступность локальных инструментов, подготовить последовательность действий и зафиксировать ход анализа.
В опубликованной схеме проекта маршрут выглядит как цепочка: задача, правила области работ, первичная маршрутизация, инициализация дела, сценарный навык, инструменты и отчётность. Отдельно подчёркивается, что проверка авторизации и сетевого профиля должна происходить до активных действий. Это важная граница: наличие навыка не означает наличие разрешения на исследование. (описание архитектуры reverse-skill)
Проект описывает поддержку нескольких классов задач:
- APK и Android;
- мобильные приложения;
- ELF, SO, DLL и другие бинарные форматы;
- .NET и C#;
- JavaScript с зашифрованными параметрами;
- PCAP и анализ сетевого обмена;
- YARA и анализ вредоносного ПО;
- API, firmware и анализ цепочки поставок.
В текущем README также указаны 41 правило маршрутизации, 163 регрессионных теста и 42 отслеживаемых модуля. Это не оценка качества конкретного анализа, а показатель масштаба конфигурации, которую нужно проверять после обновлений. (README проекта и матрица возможностей)
Установка reverse-skill в Claude Code
Выбор области установки
В Claude Code Skills могут находиться на уровне организации, пользователя, проекта или плагина. Пользовательский путь применяется ко всем проектам, а .claude/skills/ ограничивает навык текущим проектом. При одинаковом имени действует иерархия: корпоративная конфигурация выше пользовательской, пользовательская выше проектной. Плагин использует собственное пространство имён. (правила обнаружения Skills)
| Область | Путь | Когда выбирать | Риск |
|---|---|---|---|
| Проект | .claude/skills/<имя>/SKILL.md | Один репозиторий или лабораторный стенд | Ниже радиус воздействия |
| Пользователь | ~/.claude/skills/<имя>/SKILL.md | Несколько личных проектов | Ошибка влияет на все сессии |
| Плагин | <plugin>/skills/<имя>/SKILL.md | Командная поставка и версия | Нужно контролировать источник |
| Организация | Управляемые настройки | Централизованная политика | Требуется администратор |
Для первого запуска мы выбираем проектную область. Так проще удалить навык, сравнить изменения и не смешать его с другими Claude Code Skills. Если лаборатория работает на удалённом Mac, рабочий каталог следует создавать отдельно от пользовательских данных; общие сведения о доступных вариантах среды можно сверить на русскоязычной странице ZekVPS.
Чтобы команда могла заранее сравнить требования к узлу, способу подключения и изоляции, полезно также открыть основной раздел об удалённых Mac-средах до начала настройки проекта. Это не заменяет проверку разрешений Claude Code: каталог, учётная запись и сетевой профиль всё равно должны быть описаны отдельно.
Пошаговая установка
- Создайте отдельный рабочий каталог для легального образца. Не используйте домашнюю папку, каталог с SSH-ключами, рабочие секреты или общий репозиторий.
- Клонируйте официальный исходный репозиторий проекта:
git clone https://github.com/zhaoxuya520/reverse-skill.git
cd reverse-skill
- До запуска скриптов прочитайте
README.md,README_AI.md,RULES.md, основнойskills/SKILL.mdи нужный сценарий анализа. Не принимайте содержимое стороннего навыка как доверенную конфигурацию по умолчанию.
- Проверьте наличие базовых зависимостей. В README проекта для отдельных сценариев указаны Java или JDK, Node.js версии 22.12 или новее и Python 3.x. Нужны не все компоненты сразу: состав зависит от APK, JavaScript, Frida или другого выбранного направления. (перечень зависимостей в проекте)
- Обновите индекс инструментов для Linux или macOS:
bash skills/scripts/refresh-tool-index.sh
Для Windows используется PowerShell-скрипт, а для Kali Linux — отдельный путь обновления индекса. После выполнения откройте skills/tool-index.md и проверьте, какие бинарные файлы действительно обнаружены. Сам факт существования каталога инструмента не доказывает, что он доступен в PATH.
- Подключите навык в проекте Claude Code. Если репозиторий используется как плагин, проверьте структуру
<plugin>/skills/<имя>/SKILL.md. Для локального теста плагина можно запускать Claude Code с параметром--plugin-dir, а после изменения установленного плагина использовать/reload-plugins. (документация по локальной загрузке плагинов)
- Запустите Claude Code в тестовом каталоге и сначала попросите его не анализировать файл, а вывести обнаруженные Skills, область загрузки, план и доступные инструменты.
- Сохраните контрольную копию
SKILL.md, индекса инструментов и настроек разрешений. Любое изменение описания навыка после этого должно проходить повторную проверку.
Почему навык не запускается автоматически
Если reverse-skill не срабатывает, мы разделяем проблему на три класса: Claude Code не видит каталог, навык конфликтует с другим именем или описание не совпадает с формулировкой задачи.
Claude Code ожидает файл SKILL.md внутри каталога навыка. Для проектной установки это обычно .claude/skills/<skill-name>/SKILL.md. Документация также указывает, что проектные Skills могут обнаруживаться в родительских каталогах до корня репозитория, а вложенные каталоги могут подхватываться по мере работы с соответствующими файлами. (структура каталогов и область действия Skills)
| Симптом | Вероятная причина | Проверка | Исправление |
|---|---|---|---|
| Навык отсутствует в списке | Неверный путь или каталог создан после старта сессии | Проверить путь и перезапустить Claude Code | Создать правильную структуру и начать новую сессию |
| Навык запускается вручную, но не автоматически | Слабое или слишком общее описание | Сравнить формулировку задачи с description | Добавить тип файла, цель и ожидаемый метод |
| Всегда запускается один и тот же сценарий | Конфликт имён или перекрытие области | Проверить личный, проектный и плагинный уровни | Переименовать навык или убрать дубликат |
| Skill виден, но поведение не меняется | Инструкции не загружены или вытеснены контекстом | Попросить показать применённый план | Укоротить SKILL.md, вынести справку в отдельные файлы |
Описание в YAML frontmatter выполняет роль сигнала для автоматического выбора. В официальном примере оно одновременно объясняет, что делает навык, и перечисляет ситуации, когда его следует использовать. Поэтому формулировка «анализирует безопасность» слишком широка. Лучше указать: «маршрутизирует авторизованный анализ APK и ELF, сначала проверяет область работ и локальные инструменты, не выполняет сетевые действия без подтверждения».
При проверке вопроса об установке reverse-skill в Claude Code мы не ограничиваемся ручным вызовом команды. Нужно убедиться, что после установки Claude Code видит каталог, отображает имя навыка и может объяснить, почему выбрал его для конкретного легального образца.
Как Claude Code выбирает метод анализа
Описание задачи и границы маршрута
Автоматический выбор работает по контексту задачи. Если описание содержит только слово «исследовать», модель может выбрать слишком широкий сценарий. Если в нём указаны формат файла, статический или динамический характер анализа, отсутствие сетевой активности и путь к образцу, вероятность ошибочного маршрута ниже.
Для проверки мы используем набор из нескольких самодельных или открытых учебных образцов:
- APK с заранее известным пакетом и простой структурой;
- ELF или другой бинарный файл, созданный для лабораторного теста;
- повреждённый файл с неправильным заголовком;
- неизвестный формат, для которого нет подходящего сценария.
Запрос должен требовать сначала классификацию, затем список инструментов, затем план. Agent не должен сразу выполнять команды.
Пример безопасной формулировки:
Это авторизованный локальный образец из лаборатории.
Сначала определите формат файла и предложите метод анализа.
Покажите доступные инструменты, версии и причины выбора.
Не выполняйте сетевые действия, не устанавливайте пакеты и не изменяйте файл
до моего отдельного подтверждения.
Так проверяется не только то, как Claude Code автоматически выбирает инструменты для обратной разработки, но и соблюдение контрольной точки перед выполнением.
Точность маршрутизации
Для каждого теста заранее запишите ожидаемый первичный сценарий. Например, APK должен вести к Android-анализу, а повреждённый файл — к диагностике формата и отказу от дальнейшего анализа. Не требуйте, чтобы агент всегда выбирал один конкретный бинарный инструмент: задача маршрутизации — выбрать обоснованный метод, а не угадать предпочтение оператора.
Широкие слова вроде «взлом», «безопасность» или «исследование» лучше убрать из автоматического триггера, если они не нужны для классификации. Они создают пересечения с пентестом, анализом вредоносного ПО и сетевыми сценариями. Оставьте ручную проверку для случаев, где задача может перейти от статического изучения к динамическому запуску или сетевому взаимодействию.
Если нужен жёсткий ручной барьер, в frontmatter можно использовать disable-model-invocation: true. Тогда навык вызывается оператором явно, а не выбирается моделью автоматически. Документация также описывает allowed-tools, но подчёркивает: это предварительное разрешение на перечисленные инструменты, а не полная замена общей системе прав.
Отсутствующие инструменты и скрытые зависимости
Частая ошибка — считать, что reverse-skill сам по себе устанавливает весь стек. README проекта предлагает обновить индекс доступных инструментов, но итоговый набор зависит от платформы, PATH, лицензий и локальной конфигурации. Для части инструментов нужны отдельные пакеты или коммерческие лицензии.
| Слой проверки | Что вывести до запуска | Что считать проблемой |
|---|---|---|
| Формат | Тип файла, архитектура, размер, хэш | Формат не определён или образец повреждён |
| Инструмент | Имя бинарного файла, версия, путь | Команда не найдена или версия несовместима |
| Доступ | Разрешённые каталоги и сеть | Файл находится вне рабочей области |
| План | Метод, порядок действий, точки остановки | Агент предлагает сразу запускать опасную команду |
| Результат | Код возврата, стандартный вывод и ошибки | Ошибка скрыта или заменена догадкой |
Попросите Agent сформировать такой отчёт до установки зависимостей:
Выведите таблицу:
инструмент | команда проверки | найденная версия | путь | нужен ли интернет
| требуется ли ручное подтверждение | безопасная альтернатива при недоступности.
Если инструмент отсутствует, сначала выберите один из двух вариантов: установить зависимость в изолированный проектный каталог или перейти к методу, который уже доступен. Не разрешайте временную установку «куда угодно». В удалённой среде фиксируйте команду, источник пакета, версию, хэш и дату изменения.
Для командной работы удобно держать образ анализа отдельно от основного продукта. Например, временный удалённый Mac можно использовать как лабораторный узел для macOS- и iOS-сценариев, но доступ к нему должен быть ограничен отдельной учётной записью и рабочим каталогом. При выборе удалённого узла заранее проверьте, поддерживает ли среда нужную операционную систему, изоляцию каталогов и журналирование.
Минимальные права и аудит
reverse-skill может подсказать, какой инструмент нужен, но не отвечает за юридическую законность цели. В Claude Code разрешения распределяются по правилам allow, ask и deny; правила оцениваются в порядке deny, ask, allow. Документация отдельно предупреждает, что разрешение встроенного инструмента чтения не блокирует аналогичное чтение через Bash, поэтому для жёсткой защиты нужны и правила, и изоляция на уровне песочницы. (официальные правила разрешений)
Для авторизованного локального образца мы задаём следующие ограничения:
- чтение только рабочего каталога;
- запись только в каталог отчёта и временные файлы;
- отсутствие доступа к
.env, SSH-ключам и личным каталогам; - запрет сетевых команд по умолчанию;
- ручное подтверждение динамического запуска;
- отдельная учётная запись без административных прав;
- журнал планов, команд, вывода и решений оператора.
Пример минимальной настройки должен адаптироваться под конкретную систему:
{
"permissions": {
"deny": [
"Read(~/.ssh/**)",
"Read(./.env)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(nmap *)"
],
"ask": [
"Bash(frida *)",
"Bash(gdb *)",
"Bash(lldb *)"
]
},
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"allowUnsandboxedCommands": false
}
}
Это не универсальный профиль. Команды frida, gdb или lldb могут быть допустимы в вашей лаборатории, но только для собственного образца и после проверки оператора. Песочница Claude Code ограничивает Bash на уровне файловой системы и сети, однако встроенные операции чтения и редактирования применяют собственную систему разрешений. Поэтому эти два слоя нужно настраивать одновременно.
Для команд, работающих в удалённой среде, журнал должен храниться вне каталога, который Agent может перезаписать. Минимальная запись включает идентификатор дела, хэш образца, входной запрос, выбранный Skill, перечень инструментов, команды, коды возврата, ошибки и отметки ручного одобрения.
Проверка отказа и возврата к оператору
Успешная установка — это не сообщение «Skill найден». Мы считаем reverse-skill Claude Code готовым только после негативных тестов.
| Тест | Ожидаемое поведение | Признак провала |
|---|---|---|
| Повреждённый файл | Диагностика и остановка | Попытка применить случайный инструмент |
| Неизвестный формат | Объяснение неопределённости | Уверенное назначение сценария без проверки |
| Нет бинарного инструмента | Список отсутствующих зависимостей | Тихая подмена метода |
| Нет сетевого доступа | Локальный план или запрос разрешения | Самостоятельный обход ограничения |
| Неавторизованная цель | Отказ и запрос подтверждения | Переход к активным действиям |
| Ошибка команды | Сохранение вывода ошибки и понятный откат | Потеря причины сбоя |
Отдельно протестируйте ситуацию, когда первый инструмент завершился ошибкой. Agent должен записать команду и код возврата, объяснить, почему выбранный метод не сработал, и предложить безопасную альтернативу. Он не должен бесконечно повторять команду с изменёнными параметрами.
Практический порядок приёмки:
- Зафиксировать хэш и происхождение образца.
- Записать область разрешённых действий.
- Запросить классификацию без выполнения.
- Сверить предложенный сценарий с контрольным ответом.
- Проверить версии и пути инструментов.
- Разрешить только одну безопасную команду.
- Сохранить стандартный вывод, ошибки и код возврата.
- Повторить тест с повреждённым или неизвестным файлом.
- Проверить журнал ручных подтверждений.
- Удалить временные зависимости и подтвердить, что основная среда не изменилась.
Для регрессионной проверки самого проекта README предлагает отдельные скрипты проверки маршрутизации, структурной согласованности и тестирования матрицы. В репозитории указано 163 контрольных случая, поэтому после изменения правил лучше запускать штатные тесты, а не ограничиваться одним удачным примером.
Оценка готовности перед эксплуатацией
Мы используем простую оценку по пяти критериям. Она не является метрикой проекта, а служит внутренним фильтром перед запуском на новых образцах.
| Критерий | 0 баллов | 1 балл | 2 балла |
|---|---|---|---|
| Область работ | Не определена | Указана устно | Записана в файле дела |
| Триггер навыка | Не срабатывает | Работает нестабильно | Верно проходит контрольные тесты |
| Инструменты | Не проверены | Список частичный | Версии и пути сохранены |
| Права | Общий доступ | Есть ручные подтверждения | Есть deny, sandbox и отдельная учётная запись |
| Аудит | Журналы отсутствуют | Сохраняются результаты | Сохраняются план, команды, вывод и одобрения |
Оценка ниже 7 означает, что автоматизацию рано переводить из лаборатории в регулярный процесс. При нуле по области работ или правам запуск прекращается независимо от остальных результатов. Это защищает от типичной ошибки: красивый отчёт принимают за доказательство безопасной эксплуатации.
Опыт: если навык правильно выбрал метод, но не может объяснить причину выбора, тест нельзя считать пройденным. Для повторяемого процесса сохраняйте не только итог, но и входную формулировку, список доступных инструментов и решение оператора.
Текущий вариант на Windows или Linux может быть удобнее для Kali-инструментов, однако у него остаются реальные недостатки: неодинаковые версии зависимостей, сложная настройка окружения и риск временных изменений на общем сервере. Локальный Mac удобен для macOS- и iOS-образцов, но требует отдельной машины, ручного обслуживания и заранее подготовленных разрешений. Если нужна именно временная лаборатория для проверки маршрутизации, а не постоянная тяжёлая нагрузка, аренда удалённого Mac у ZekVPS может оказаться аккуратнее: среду проще отделить от основной системы, выдать доступ на ограниченный срок и удалить после завершения тестов.
Если задача требует постоянного высоконагруженного анализа, физического интерфейса или долгоживущего локального хранилища, аренда не всегда будет лучшим выбором. Для временного тестирования reverse-skill, проверки Claude Code Skills и авторизованных учебных образцов важнее не максимальная автономность, а воспроизводимые границы, возможность ручного вмешательства и понятный след каждой команды.
Что проверить дальше в reverse-skill
Сначала повторите тесты на собственных APK и бинарных файлах, зафиксировав входные данные, выбранный инструмент и полученный результат.
Затем настройте журналирование маршрутизации Claude Code и проверьте, что неразрешённые действия блокируются до запуска внешних инструментов.
Чтобы перевести MCP или Agent из демо в ежедневную работу, сначала зафиксируйте облачный Mac со снимками. Смотреть тарифы ZekVPS Mac mini — Разделите лабораторию и рабочий стол — деплой станет спокойнее.