На цій сторінці

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

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

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

Налаштування REA

Вставте цей запит у свого ШІ-помічника для програмування:

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

Встанови REA та підключи його до цього ШІ-помічника за допомогою npx rea-agents@latest setup. Спочатку покажи план змін і дочекайся мого схвалення. Потім перевір встановлення.

Або виконайте цю команду в терміналі:

npx rea-agents@latest setup

Перевірте й схваліть план змін, а потім перезапустіть помічника.

Інші способи встановлення: curl →

Перший раз або відсутній Node.js або використовується засіб кодування? Дотримуйтесь покрокового керівництва по налаштуванню →

Як це працює

Зворотна розробка , це вивчення роботи ПЗ через дослідження самої програми. З 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

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

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

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

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

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

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

10% of 200 = 20200 + 20 = 220
REA надає
Інструкції обробника, декомпільований код та виклики.
Помічник пояснює
Яка гілка застосовується, що вона обчислює і як її перебудувати.
Виберіть збірку з встановленої бібліотеки DLL Calculator. Міркування та відповідь ілюструють отримані результати. Продовжимо з прикладом з калькулятором ↓

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

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

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

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

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

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

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

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

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

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

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

6 → 10 → 13

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

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

Перевірена мета: версія браузера wayou, заснована на 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, округлена до одного знака після коми.

У новій міні-грі збережено це правило швидкості. Її код для малювання, стрибків і зіткнень - це невелика навчальна реалізація. Відкрийте лабораторію, щоб ознайомитися з новим кодом і виконати ту ж перевірку швидкості.

Щоб самостійно перевірити цільовий об'єкт, виконайте дії по підключенню до браузеру, використовувати сторінку dinosaur. Вкажіть своєму агенту URL - адресу цієї сторінки та локальну кінцеву точку налагодження, а потім скопіюйте наведений вище запит.

Перевірений код швидкості · Автори Chromium * Ліцензія BSD

Приклад 02 * Калькулятор Windows

Відтворіть кнопку % калькулятора.

Кнопка % працює по-різному після + і ×. Знайдемо обидва правила й перевіримо їх у невеликому калькуляторі.

1. Запитайте про кнопку %

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

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

2. Знайдіть обидва правила

REA допомагає агенту читати код кнопки %. У ньому застосовуються два різні правила:

Со +
Візьмемо 10% від першого числа.10% of 200 = 20 → 200 + 20 = 220
Со ×
Перетворіть 10% на 0,1200200 × 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 для опису відновленої гілки.

Відсоток реалізації · Тестові приклади Microsoft * Керівництво по вбудованої налаштуванні

Тематичні дослідження REA.

Дослідіть функцію випущеного застосунку або гри разом із кодом і перевіреними результатами.

Вітрина →

Android * аналіз APK

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

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

Ознайомтеся з тематичним дослідженням Android

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

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

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

Ознайомтеся з тематичним дослідженням Notion

Ваше перше розслідування

Спробуйте REA у невеликому додатку.

Завантажте наш приклад Notes, простежте його експорт CSV і перевірте один змінений вхід.

Спробуйте керуватися наведеним прикладом

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

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

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

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

Керівництво по аналізу програм з машинним кодом

JavaScript і Electron

Відображайте модулі, маршрути, IPC та власні залежності з папки програми або архіву ASAR.

Робочі процеси додатків

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

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

Керівництво по спостереженню за браузером
Спробувати більший проєкт
Приклад запиту * Веб-сайт

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

Так, ось цей.

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

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

Дивіться тематичне дослідження DX-Ball →

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

Топ