rev-unicorn-debug — скилл для Claude Code: эмуляция Unicorn
Скилл для реверса: прогоняет отдельную функцию бинаря через Unicorn, подменяет JNI, сисколлы и libc заглушками и доводит эмуляцию до возврата.
npx skills add P4nda0s/reverse-skills --skill rev-unicorn-debug -a claude-codeЧто делает rev-unicorn-debug
Скилл берётся за случай, когда нужен не весь бинарь, а один участок: проверка лицензии, расшифровка строк, кусок нативной библиотеки. Агент читает файл сырыми байтами и мапит их прямо в память Unicorn, без разбора заголовков ELF, PE или Mach-O. Короче путь, меньше поводов споткнуться. Сырой маппинг ломается, если код обращается к сегментам по фиксированным адресам — тогда разбор делается минимальный, только для нужных сегментов.
Дальше он выписывает, что функция зовёт наружу: malloc, memcpy, GetStringUTFChars, сисколлы, operator new. Каждый такой адрес получает хук, а ответ считает питоновская заглушка: bump-аллокатор вместо malloc, фейковая таблица JNIEnv с RET-заглушками по входам. Отработала заглушка — PC переставляется в LR, и оригинальная функция пропускается.
Первый запуск почти всегда падает. Скилл крутит цикл: запустить, прочитать из колбэка адрес и тип падения, дописать хук, домэпить страницу, поправить регистры, запустить снова. Трассировка идёт по блокам, а не по инструкциям, потому что построчный лог на длинном участке нечитаем. Из окружения нужен Python и сам Unicorn. Для ARM64, ARM32, x86-64, x86-32 и MIPS32 в скилле есть таблица: указатель стека, регистр возврата, аргументы, механизм сисколла.
Какие задачи решает
- сэмулировать одну функцию из нативной библиотеки, не запуская приложение
- снять расшифровку строк, прогнав только нужный участок кода
- подменить JNI-вызовы заглушками, чтобы эмуляция дошла до возврата
- домэпить недостающую страницу по адресу падения
- отсечь бесконечный цикл счётчиком выполнений
Примеры запросов агенту
- Сэмулируй через Unicorn эту функцию проверки и скажи, что она возвращает на моём входе.
- Прогони только участок с расшифровкой строк, весь бинарь запускать не надо.
- Подмени JNI-вызовы заглушками, иначе эмуляция падает на
GetStringUTFChars.
Как установить rev-unicorn-debug
1Через Skills CLI (Vercel)
npx skills add P4nda0s/reverse-skills --skill rev-unicorn-debug -a claude-code2Вручную: положить файлы
~/.claude/skills/rev-unicorn-debug/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/rev-unicorn-debug/
1Через Skills CLI (Vercel)
npx skills add P4nda0s/reverse-skills --skill rev-unicorn-debug -a codex2Вручную: положить файлы
.agents/skills/rev-unicorn-debug/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add P4nda0s/reverse-skills --skill rev-unicorn-debug -a cursor2Вручную: положить файлы
.cursor/skills/rev-unicorn-debug/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install P4nda0s/reverse-skills rev-unicorn-debug2Вручную: положить файлы
.github/skills/rev-unicorn-debug/SKILL.md1Через Skills CLI (Vercel)
npx skills add P4nda0s/reverse-skills --skill rev-unicorn-debug -a gemini-cli2Командой платформы
gemini skills install https://github.com/P4nda0s/reverse-skills --path skills/rev-unicorn-debugВручную: положить файлы
.devin/skills/rev-unicorn-debug/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add P4nda0s/reverse-skills --skill rev-unicorn-debug -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о rev-unicorn-debug
Как установить rev-unicorn-debug в Claude Code?
Выполните npx skills add P4nda0s/reverse-skills --skill rev-unicorn-debug -a claude-code. Скилл ляжет в ~/.claude/skills/rev-unicorn-debug/SKILL.md.
Что делает rev-unicorn-debug?
Эмулирует отдельные функции и фрагменты кода через Unicorn, подменяя внешние зависимости заглушками на Python. Так можно снять результат функции или расшифровать данные, не запуская программу целиком.
Для каких архитектур он подходит?
В скилле есть справочник по ARM64, ARM32, x86-64, x86-32 и MIPS32: регистры аргументов и возврата, указатель стека, номера сисколлов.