---
title: 'REA: Реверс-инжиниринг с вашим ИИ-помощником для программирования'
url: https://rea.tools/ru/
---

Обратное проектирование с помощью вашего агента по кодированию

# Узнайте, как работает программа.

Спросите своего агента-программиста о приложении, игре или сайте. REA даёт ему инструменты, чтобы исследовать код, на котором основан ответ.

[Начать](https://rea.tools/get-started/)
[Посмотреть пример ↓](https://rea.tools/ru/#dinosaur)

## Настройка REA

Вставьте этот запрос в своего ИИ-помощника для программирования:

Ваш кодирующий агент

Установи REA и подключи его к этому ИИ-помощнику с помощью npx rea-agents@latest setup. Сначала покажи план изменений и дождись моего одобрения. Затем проверь установку.

Или выполните эту команду в терминале:

`npx rea-agents@latest setup`

Проверьте и одобрите план изменений, затем перезапустите помощника.


Параметры настройки


Другие способы установки: [curl →](https://rea.tools/get-started/#curl-installation)

Первый раз или отсутствует Node.js или используется средство кодирования? [Следуйте пошаговому руководству по настройке →](https://rea.tools/get-started/)

[Создание RL-окружений →](https://rea.tools/ru/#rl-environments)

Запишите веб-приложение для обучения и тестирования агентов.

[Витрины →](https://rea.tools/ru/showcase/)

Исследования и интерактивные демонстрации.

[Блог →](https://rea.tools/ru/blog/)

Методы и заметки о воссоздании ПО.

## Как это работает

Обратная разработка — это изучение того, как работает ПО, через исследование самой программы. С REA ваш агент может проследить код, объяснить функцию и помочь воссоздать её.

1. ### Спросите об одной функции

   Дайте агенту программу или страницу и задайте вопрос.
2. ### Исследуйте программу

   REA помогает вашему агенту читать код и выяснять, что программа делает во время работы.
3. ### Разберитесь и попробуйте изменить

   Агент использует результаты исследования, чтобы объяснить или воссоздать функцию.

Посмотреть полное исследование Калькулятора

Почему 200 + 10% даёт 220 в Калькуляторе?

### Проследить инструкции шаг за шагом

Оригинальные выбранные инструкции для x64 ·

```
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
0x180124960: LEA RCX, [RSP + 0x160]
0x180124968: CALL 0x180122650
0x18012496e: LEA RDX, [R13 + 0x160]
0x180124975: LEA RCX, [RSP + 0x78]
0x18012497a: CALL 0x180109720
0x18012497f: MOV RSI, RAX
0x180124982: MOV qword ptr [RSP + 0x28], RAX
0x180124987: LEA RDX, [RSP + 0x160]
0x18012498f: MOV RCX, RAX
0x180124992: CALL 0x180123190
; … value-copy instructions omitted …
0x180124a14: MOV RDX, RDI
0x180124a17: LEA RCX, [RSP + 0xf8]
0x180124a1f: CALL 0x180109720
0x180124a24: LEA R8, [RSP + 0x30]
0x180124a29: MOV RDX, RAX
0x180124a2c: LEA RCX, [RSP + 0xb8]
0x180124a34: CALL 0x180123c10
```



01 · В каком филиале?

“**0x5b? 0x5c?** Два перехода в одно и то же место. Что это за операторы?”

Найдите идентификаторы команд, затем пометьте ветвь.

0x5b
:   Разделить ÷

0x5c
:   Умножить ×

02 · Что делают вызываемые функции?

“100 - это чисто. Вызовы - это просто адреса. **Какой из них делится? Какое значение входит в?**”

Проверьте вспомогательные функции и проследите сохраненные значения.

0x64
:   100

…123190
:   Делить

03 · Каково это правило?

“Этот путь умножается на другие входные данные. Таким образом, **10% означает 10% от 200** после +”.

Назовите операнды и проверьте оба пути к операторам.

200 × 10 / 100
**20**

![](https://rea.tools/assets/localized/ru/figures/analyst-thinking.svg)

Наглядное рассуждение эксперта

**Вы расшифровываете инструкции, выполняете вызовы функций и восстанавливаете вычисления.**

Задать агенту тот же вопрос

Пример подсказки · Калькулятор

Используйте REA для проверки Windows Calculator. Почему 200 + 10% дают 220?

Пример ответа · основан на результатах исследования

После + кнопка % выводит **процентное значение от первого числа.**

`10% of 200 = 20`**200 + 20 = 220**

REA предоставляет
:   Инструкции обработчика, декомпилированный код и вызовы.

Помощник объясняет
:   Какая ветвь применяется, что она вычисляет и как ее перестроить.

Выберите сборку из установленной библиотеки DLL Calculator. Соображения и ответ иллюстрируют полученные результаты. [Продолжим с примером с калькулятором ↓](https://rea.tools/ru/#calculator)

Попробуем два примера: изменим скорость игры, затем воссоздадим кнопку % Калькулятора.

Пример 01 · Игра в динозавров Chrome

## Почему динозавр ускоряется?

Игра ускоряется по мере бега. Чтобы воссоздать её с регулировкой скорости, сначала нужно понять, как скорость меняется.

### 1. Спросите о скорости

Пример вопроса · Игра с динозавром

Используйте REA, чтобы ознакомиться с этой игрой про динозавров. Почему она стала быстрее? Покажите правило скорости, а затем создайте уменьшенную версию с регулируемой скоростью.

### 2. Найдите правило изменения скорости

REA позволяет агенту читать код запущенной игры. Скорость начинается с 6 и немного растёт при каждом обновлении, пока она меньше 13.

### 3. Поиграйте в результат

Мы воспроизвели это правило в мини-игре ниже и добавили ползунок скорости. Запустите игру и выберите свою скорость.

Скорость 6.0
 Используйте правило восстановленного ускорения

Первоначальное правило: начинайте с 6, затем увеличивайте до 13.

Перемещайте ползунок, чтобы установить собственную скорость. Пробел или прыжок убирают кактус.



Включите JavaScript, чтобы играть. Правило и исходный код ниже можно читать и без него.

[Откройте лабораторию скорости →](https://rea.tools/ru/examples/dino-lab/)

Ознакомьтесь со сценарием, проверками и тем, как попробовать анализ

Проверенная цель: [версия браузера wayou, основанная](https://wayou.github.io/t-rex-runner/) на Chromium.

REA · загружено index.js · выбранные строки

```
if (this.currentSpeed < this.config.MAX_SPEED) {
  this.currentSpeed += this.config.ACCELERATION;
}
```

Начните с 6. Добавляйте 0,001 при каждом обновлении без сбоев, пока скорость ниже 13.

Что делает каждая часть

1. 01 · REA

   Считывает скрипт запущенной игры

   и возвращает его действительный код и настройки агенту.
2. 02 · Ваш агент

   перестроит правило, добавит элемент управления

   и использует восстановленное ускорение в небольшой игре с ползунком скорости.
3. 03 · Вы

   меняете скорость и играете

   с оригинальным ускорением, затем выбираете свой собственный темп.

REA проверил версию HTTP-браузера через локальное отладочное соединение и вернул загруженный `index.js`, включая его исходный код и дайджест.

Выбранные настройки из проверенного скрипта

```
ACCELERATION: 0.001,
MAX_SPEED: 13,
SPEED: 6
```

Мы запустили функцию обновления оригинальной игры в контролируемой браузерной проверке, отключив препятствия и автоматическое планирование. После 4000 обновлений скорость составила 10,0; после 10 000 - 13,0, округленная до одного знака после запятой.

В новой мини-игре сохранено это правило скорости. Ее код для рисования, прыжков и столкновений - это небольшая обучающая реализация. [Откройте лабораторию](https://rea.tools/ru/examples/dino-lab/), чтобы ознакомиться с новым кодом и выполнить ту же проверку скорости.

Чтобы самостоятельно проверить целевой объект, выполните [действия по подключению к браузеру](https://rea.tools/ru/guides/browser/#prepare), используя [страницу dinosaur](https://wayou.github.io/t-rex-runner/). Укажите своему агенту URL этой страницы и локальную конечную точку отладки, затем скопируйте приведенное выше приглашение.

[Проверенный код скорости](https://github.com/wayou/t-rex-runner/blob/5455bfa408ec6b707c7300ff194b7390733a766d/index.js#L565-L571) · [Авторы Chromium · Лицензия BSD](https://rea.tools/assets/licenses/dinosaur.txt)

Пример 02 · Калькулятор Windows

## Воссоздайте кнопку % калькулятора.

Кнопка % работает по-разному после + и ×. Найдём оба правила и проверим их в небольшом калькуляторе.

### 1. Спросите о кнопке %

Пример вопроса · Калькулятор

Используйте REA для проверки кнопки % в калькуляторе Windows. Восстановите правила после + и ×, затем создайте небольшой калькулятор, который использует оба параметра.

### 2. Найдите оба правила

REA помогает агенту читать код кнопки %. В нём используются два разных правила:

С +
:   Возьмем 10% от первого числа.`10% of 200 = 20 → 200 + 20 = 220`

С ×
:   Превратите 10% в 0,1200`200 × 0.1 = 20`

### 3. Попробуйте кнопку %

Мы воспроизвели оба правила ниже. Выберите + или ×, нажмите %, затем =.

200 +
**20**

10% от 200 = 20. Тогда 200 + 20 = 220.

Интерактивная иллюстрация проверяемого процентного правила.

Посмотрите реальный код и то, как был проверен ответ

В этом примере `previous = 200`, а `current = 10`.

Читаемая сводка об обработчике %

```
if (operation == multiply || operation == divide) {
  percent = current / 100;
} else {
  percent = current * previous / 100;
}
```

От установленного приложения к рабочей кнопке %

1. 01 · REA читает calc.exe

   При запуске приложения Calculator

   код открывает `ms-calculator:`. Затем агент выбирает библиотеку установленного приложения.
2. 02 · REA считывает библиотеку

   , возвращает код обработчика %

   , функция проверяет оператор и использует константу `100`.
3. 03 · Ваш агент интерпретирует это

   , объясняет и воспроизводит правила

   , сверяет ветвь с исходным кодом Microsoft, затем попробуйте + и ×, указанные выше.

REA · выбранные оригинальные инструкции

```
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
```

Идентификаторы операторов · Исходный код Microsoft

```
#define IDC_MUL 92      // 0x5c
#define IDC_DIV 91      // 0x5b
#define IDC_PERCENT 118 // 0x76

0x64 = 100
```

Проверено с помощью REA 4.1.0: Windows Calculator 11.2508.4.0, x64. В доступной для чтения сводке используются имена из общедоступного источника Microsoft для описания восстановленной ветви.

[Процент реализации](https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalcManager/CEngine/scifunc.cpp#L98-L111) · [Тестовые примеры Microsoft](https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalculatorUnitTests/CalculatorManagerTest.cpp#L350-L370) · Руководство по [встроенной настройке](https://rea.tools/guides/native/)

## Тематические исследования REA.

Изучите функцию выпущенного приложения или игры вместе с кодом и проверенными результатами.

[Витрины →](https://rea.tools/ru/showcase/)

Android · Анализ APK

### Как аутентификатор генерирует код входа в систему

Проследите вычисление шестизначного кода входа Aegis в выпущенном APK. Затем передвиньте демонстрационные часы и узнайте, почему код меняется каждые 30 секунд.

[Ознакомьтесь с тематическим исследованием Android](https://rea.tools/showcase/aegis/)

Electron · Отслеживание объектов

### Как Notion копирует текст и HTML

Проследите JavaScript из пакета Notion до системного буфера обмена и узнайте, как копирование сохраняет расширенные данные блоков.

[Ознакомьтесь с тематическим исследованием Notion](https://rea.tools/ru/showcase/notion/)

Нативная · Реконструкция

### DX-Ball рассчитывает положение звука слева/справа

Восстановите, как положение мяча превращается в звук слева или справа в игре для Windows 1996 года.

[Ознакомьтесь с тематическим исследованием DX-Ball](https://rea.tools/ru/showcase/dx-ball/)

## Создание RL-окружений

Превратите записанный сеанс веб-приложения в готовое к запуску окружение для обучения и тестирования ИИ-агентов.

Ваш агент записывает запросы браузера и ответы приложения. REA использует эти данные для создания локальной среды, в которой агенты могут тренироваться выполнять задачи без запуска исходного приложения.

Чтобы поддерживать удаление папок, запись должна показывать папку до удаления и подтверждать её отсутствие после него.

[Руководство по созданию окружения](https://rea.tools/guides/rl-environments/) · [Смотреть демо в X](https://x.com/reatools/status/2112574822584918075?s=20)

Настройте REA в своём агенте, затем замените пример URL и операции с папками на свои:

Ваш кодирующий агент

С помощью REA создай RL-окружение из моего тестового веб-приложения: `http://127.0.0.1:3000` Включи просмотр списка папок, создание, переименование и удаление. Можно создавать и удалять тестовые папки. Существующие данные не меняй. Сохрани в папку `my-env`, проверь доступные операции и расскажи, как запустить окружение.

Пример запроса. Замените URL и операции с папками на свои.

Ваше первое расследование

## Попробуйте REA в небольшом приложении.

Загрузите наш пример Notes, проследите его экспорт CSV и проверьте один измененный ввод.

[Попробуйте руководствоваться приведенным примером](https://rea.tools/ru/first-investigation/)

## Выберите цель.

Эти руководства описывают настройку и первое исследование для каждого типа ПО.

### Программы с машинным кодом

Проверяйте функции, строки, ссылки и связи между вызовами функций в исполняемых файлах и библиотеках.

[Руководство по анализу программ с машинным кодом](https://rea.tools/guides/native/)

### JavaScript и Electron

Проследите код внутри настольного приложения на JavaScript.

[Рабочие процессы приложений](https://rea.tools/guides/javascript/)

### Активность в браузере и во время выполнения

Фиксируйте активность выбранного браузера или процесса, а затем сравнивайте результаты в разных запусках.

[Руководство по наблюдению за браузером](https://rea.tools/ru/guides/browser/)

Попробовать более крупный проект

Пример запроса · Веб-сайт

Используйте REA для проверки https://rea.tools/. Скопируйте этот веб-сайт для меня.

Да, вот этот.

Пример подсказки · Реконструкция игры

Используйте REA, чтобы воссоздать эту игру по ее исполняемому файлу. Восстановите логику игрового процесса на C и сравните ее с оригиналом.

[Смотрите тематическое исследование DX-Ball →](https://rea.tools/ru/showcase/dx-ball/)

## Есть вопросы?

Помощь с настройкой и ответы на частые вопросы есть в [FAQ](https://rea.tools/ru/faq/).

[Присоединяйтесь к Discord](https://discord.gg/GkcryMnJDM), чтобы получить помощь и обсудить свои исследования.

Сообщите об ошибке или предложите функцию в [GitHub Issues](https://github.com/morluto/rea/issues/new/choose).
