---
title: 'REA: Реверс-інжиніринг з вашим ШІ-помічником для програмування'
url: https://rea.tools/uk/
---

Зворотне проектування за допомогою агента кодування

# Дізнайтеся, як працює програма.

Запитайте свого агента-програміста про застосунок, гру або сайт. REA дає йому інструменти для дослідження коду, на якому ґрунтується відповідь.

[Почати](https://rea.tools/get-started/)
[Переглянути приклад ↓](https://rea.tools/uk/#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/uk/#rl-environments)

Запишіть вебзастосунок для навчання й тестування агентів.

[Вітрина →](https://rea.tools/uk/showcase/)

Дослідження й інтерактивні демонстрації.

[Блог →](https://rea.tools/uk/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/uk/figures/analyst-thinking.svg)

Наочне міркування експерта

**Ви розшифровуєте інструкції, виконуєте виклики функцій і відновлюєте обчислення.**

Поставити агенту те саме запитання

Приклад підказки \* Калькулятор

Використовувати REA для перевірки Windows Calculator. Чому 200 + 10% дають 220?

Приклад відповіді \* заснований на результатах дослідження

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

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

REA надає
:   Інструкції обробника, декомпільований код та виклики.

Помічник пояснює
:   Яка гілка застосовується, що вона обчислює і як її перебудувати.

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

Спробуймо два приклади: змінимо швидкість гри, а потім відтворимо кнопку % Калькулятора.

Приклад 01 \* гра в динозаврів Chrome

## Чому динозавр прискорюється?

Гра прискорюється під час бігу. Щоб відтворити її з регулюванням швидкості, спершу треба з'ясувати, як змінюється швидкість.

### 1. Запитайте про швидкість

Приклад запитання · Гра з динозавром

Використовуйте REA, щоб ознайомитися з цією грою динозаврів. Чому вона стала швидше? Покажіть правило швидкості, а потім створіть зменшену версію зі змінною швидкістю.

### 2. Знайдіть правило зміни швидкості

REA дає агенту змогу читати код запущеної гри. Швидкість починається з 6 і трохи зростає під час кожного оновлення, поки вона менша за 13.

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

Ми відтворили це правило в мінігрі нижче й додали повзунок швидкості. Почніть гру та виберіть свою швидкість.

Швидкість 6.0
 Використовуйте правило відновленого прискорення

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

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



Увімкніть JavaScript, щоб грати. Ви й далі можете читати правило та відкривати вихідний код нижче.

[Відкрийте лабораторію швидкості →](https://rea.tools/uk/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/uk/examples/dino-lab/), щоб ознайомитися з новим кодом і виконати ту ж перевірку швидкості.

Щоб самостійно перевірити цільовий об'єкт, виконайте [дії по підключенню до браузеру](https://rea.tools/uk/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/uk/showcase/)

Android \* аналіз APK

### Як аутентифікатор генерує код входу

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

[Ознайомтеся з тематичним дослідженням Android](https://rea.tools/showcase/aegis/)

Electron \* відстеження об'єктів

### Як Notion копіює текст та HTML

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

[Ознайомтеся з тематичним дослідженням Notion](https://rea.tools/uk/showcase/notion/)

Нативна \* Реконструкція

### DX-Ball обчислює положення звуку зліва / справа

Відновіть, як положення м'яча перетворюється на звук ліворуч або праворуч у грі для Windows 1996 року.

[Ознайомтеся з тематичним дослідженням DX-Ball](https://rea.tools/uk/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/uk/first-investigation/)

## Оберіть ціль.

Ці посібники описують налаштування й перше дослідження для кожного типу ПЗ.

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

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

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

### JavaScript і Electron

Простежте код усередині настільного застосунку на JavaScript.

[Робочі процеси додатків](https://rea.tools/guides/javascript/)

### Активність у браузері та під час виконання

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

[Керівництво по спостереженню за браузером](https://rea.tools/uk/guides/browser/)

Спробувати більший проєкт

Приклад запиту \* Веб-сайт

Використовуйте REA для перевірки https://rea.tools/. Скопіюйте цей веб-сайт для мене.

Так, ось цей.

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

Використовуйте REA, щоб відтворити цю гру за її виконуваним файлом. Відновіть логіку ігрового процесу на C і порівняйте її з оригіналом.

[Дивіться тематичне дослідження DX-Ball →](https://rea.tools/uk/showcase/dx-ball/)

## Маєте запитання?

Допомогу з налаштуванням і відповіді на поширені запитання можна знайти у [FAQ](https://rea.tools/uk/faq/).

[Приєднуйтеся до Discord](https://discord.gg/GkcryMnJDM), щоб отримати допомогу й обговорити свої дослідження.

Повідомте про помилку або запропонуйте функцію в [GitHub Issues](https://github.com/morluto/rea/issues/new/choose).
