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

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

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

REA надає вашому ШІ-помічнику інструменти, щоб дослідити програму й пояснити її поведінку.

Вже знайомі з RE? Перейти до посібників з аналізу →

Хочете копнути глибше? Читати блог →

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

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

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

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

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

npx rea-agents@latest setup

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

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

Що таке зворотна розробка?

З’ясування того, як працює програма, через дослідження самої програми.

Мета: зрозуміти функцію досить добре, щоб пояснити її, змінивши або перебудувати заново.

Наприклад: чому калькулятор дає 220 для 200 + 10%?

До REA · Ви досліджуєте самостійно

Оригінальні вибрані інструкції для 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 · Ви запитуєте свого помічника

Лише один запит.

Запитайте помічника звичайними словами.

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

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

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

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

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

Давайте розглянемо два приклади. Змініть швидкість гри, потім поверніться до калькулятора та відновіть його кнопку %.

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

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

Мета
Перебудовуйте гру з регульованою швидкістю.
Навіщо його перепроектувати?
Щоб відтворити його прискорення, нам потрібно правило в біговій грі: як швидко воно починається, наскільки збільшується і коли припиняється.

Грати у відтворену версію

6 → 10 → 13

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

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

REA повернув

Скрипт, фактично запущений на сторінці. Агент зчитує свою функцію оновлення та налаштування швидкості, а потім використовує це правило в новій грі.

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

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

Перевірена мета: версія браузера 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

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

Ми бачили, чому 200 + 10% дають 220. Тепер давайте відновимо правила для + і × і спробуємо їх застосувати.

Мета
Створіть невеликий калькулятор, який коректно обробляє як+, так і ×.
Навіщо його перепроектувати?
Одна і та ж кнопка використовує різні правила після + і ×. Ми перевіряємо встановлене додаток, щоб визначити, до якого числа застосовується процентне співвідношення.

Спробуйте зробити розрахунок

200 + 20

10% від 200 = 20. Тоді 200 + 20 = 220.

Інтерактивна ілюстрація перевіряється процентного правила.

REA повернув

Одна гілка ділиться на 100. Інша також множиться на перше число. Агент використовує обидві гілки для відтворення кнопки%.

У цьому прикладі previous = 200, а current = 10.

Приклад підказки · перебудувати кнопку %

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

Читається зведення про обробнику %
if (operation == multiply || operation == divide) {
  percent = current / 100;
} else {
  percent = current * previous / 100;
}
Со +
Візьмемо 10% від першого числа.10% of 200 = 20 → 200 + 20 = 220
Со ×
Перетворіть 10% на 0,1200200 × 0.1 = 20

Від встановленого додатка до робочої кнопки %

  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 у невеликому додатку.

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

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

Хочете дізнатися більше?

Скажіть своєму агенту, що ви хочете зрозуміти або доопрацювати. З REA ви можете працювати разом над чим завгодно-від клонування цього веб-сайту до відтворення гри по її виконуваному файлу.

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

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

Так, ось цей.

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

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

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

Для виконання етапів настройки і аналізу виберіть свій цільовий об'єкт:

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

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

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

JavaScript і Electron

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

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

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

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

Керівництво по спостереженню за браузером

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

Ознайомтеся з часто задавати питання, поспілкуйтеся з нами по Discord або відкрийте випуск GitHub, щоб дізнатися про помилки та запити функцій.

Приєднатися до спільноти

Діліться результатами досліджень і отримуйте допомогу від інших користувачів REA на Discord. Слідкуйте за оновленнями проекту REA на X.

Топ