# rev-unicorn-debug

Скилл для реверса: прогоняет отдельную функцию бинаря через Unicorn, подменяет JNI, сисколлы и libc заглушками и доводит эмуляцию до возврата.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1800 установок · ★ 2314
- Автор: P4nda0s
- Лицензия: не указана · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/P4nda0s/reverse-skills/tree/HEAD/skills/rev-unicorn-debug/SKILL.md
- Обновлён: 2026-05-06
- HTML: https://affpapa.org/nevibecode/skills/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 в скилле есть таблица: указатель стека, регистр возврата, аргументы, механизм сисколла.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add P4nda0s/reverse-skills --skill rev-unicorn-debug -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/rev-unicorn-debug/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/rev-unicorn-debug/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add P4nda0s/reverse-skills --skill rev-unicorn-debug -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/rev-unicorn-debug/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add P4nda0s/reverse-skills --skill rev-unicorn-debug -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/rev-unicorn-debug/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install P4nda0s/reverse-skills rev-unicorn-debug
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/rev-unicorn-debug/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add P4nda0s/reverse-skills --skill rev-unicorn-debug -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/P4nda0s/reverse-skills --path skills/rev-unicorn-debug
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/rev-unicorn-debug/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add P4nda0s/reverse-skills --skill rev-unicorn-debug -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/P4nda0s/reverse-skills/tree/HEAD/skills/rev-unicorn-debug/SKILL.md

## Когда брать
- сэмулировать одну функцию из нативной библиотеки, не запуская приложение
- снять расшифровку строк, прогнав только нужный участок кода
- подменить JNI-вызовы заглушками, чтобы эмуляция дошла до возврата
- домэпить недостающую страницу по адресу падения
- отсечь бесконечный цикл счётчиком выполнений

## Примеры запросов агенту
- Сэмулируй через Unicorn эту функцию проверки и скажи, что она возвращает на моём входе.
- Прогони только участок с расшифровкой строк, весь бинарь запускать не надо.
- Подмени JNI-вызовы заглушками, иначе эмуляция падает на `GetStringUTFChars`.

## Похожие
- [leanrea](https://affpapa.org/nevibecode/skills/leanrea.md) — скилл · 1300 установок
- [ctf-rev](https://affpapa.org/nevibecode/skills/ctf-rev.md) — скилл · 321 установка
- [binutils](https://affpapa.org/nevibecode/skills/binutils.md) — скилл · 608 установок
- [reverse-engineering-tools](https://affpapa.org/nevibecode/skills/reverse-engineering-tools.md) — скилл · 544 установки
- [safe-debug](https://affpapa.org/nevibecode/skills/safe-debug.md) — скилл · 335000 установок
- [insforge-debug](https://affpapa.org/nevibecode/skills/insforge-debug.md) — скилл · 56700 установок

Из того же набора: [p4nda0s/reverse-skills](https://affpapa.org/nevibecode/by/p4nda0s/reverse-skills.md) — 7 карточек

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
