Зворотне проектування за допомогою агента кодування
Дізнайтеся, як
працює програма.
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 надає
- Інструкції обробника, декомпільований код та виклики.
- Помічник пояснює
- Яка гілка застосовується, що вона обчислює і як її перебудувати.
Давайте розглянемо два приклади. Змініть швидкість гри, потім поверніться до калькулятора та відновіть його кнопку %.
Приклад 01 * гра в динозаврів Chrome
Чому динозавр прискорюється?
- Мета
- Перебудовуйте гру з регульованою швидкістю.
- Навіщо його перепроектувати?
- Щоб відтворити його прискорення, нам потрібно правило в біговій грі: як швидко воно починається, наскільки збільшується і коли припиняється.
Грати у відтворену версію
Початкове правило: починайте з 6, потім збільшуйте до 13.
REA повернув
Скрипт, фактично запущений на сторінці. Агент зчитує свою функцію оновлення та налаштування швидкості, а потім використовує це правило в новій грі.
Використовуйте REA, щоб ознайомитися з цією грою динозаврів. Чому вона стала швидше? Покажіть правило швидкості, а потім створіть зменшену версію зі змінною швидкістю.
Перевірена мета: версія браузера wayou, заснована на Chromium.
if (this.currentSpeed < this.config.MAX_SPEED) {
this.currentSpeed += this.config.ACCELERATION;
}
Почніть з 6. Додавайте 0,001 при кожному оновленні без збоїв, поки швидкість нижче 13.
Відкрийте лабораторію швидкості →Що робить кожна частина
- 01 · REA Зчитує скрипт запущеної гри і повертає його дійсний код та налаштування агенту.
- 02 * ваш агент перебудує правило, додасть елемент управління і використовує Відновлене прискорення в невеликій грі з повзунком швидкості.
- 03 * ви міняєте швидкість і граєте з оригінальним прискоренням, потім вибираєте свій власний темп.
Ознайомтеся зі сценарієм, перевірками та як спробувати аналіз
REA перевірив версію браузера HTTP через локальне з'єднання Налагодження та повернув завантажений index.js, включаючи його вихідний код та дайджест.
ACCELERATION: 0.001,
MAX_SPEED: 13,
SPEED: 6
Ми запустили функцію оновлення оригінальної гри в контрольованій перевірці браузера, вимкнувши перешкоди та автоматичне планування. Після 4000 оновлень швидкість склала 10,0; після 10 000 - 13,0, округлена до одного знака після коми.
У новій міні-грі збережено це правило швидкості. Її код для малювання, стрибків і зіткнень - це невелика навчальна реалізація. Відкрийте лабораторію, щоб ознайомитися з новим кодом і виконати ту ж перевірку швидкості.
Щоб самостійно перевірити цільовий об'єкт, виконайте дії по підключенню до браузеру, використовувати сторінку dinosaur. Вкажіть своєму агенту URL - адресу цієї сторінки та локальну кінцеву точку налагодження, а потім скопіюйте наведений вище запит.
Приклад 02 * Калькулятор Windows
Відтворіть кнопку % калькулятора.
Ми бачили, чому 200 + 10% дають 220. Тепер давайте відновимо правила для + і × і спробуємо їх застосувати.
- Мета
- Створіть невеликий калькулятор, який коректно обробляє як+, так і ×.
- Навіщо його перепроектувати?
- Одна і та ж кнопка використовує різні правила після + і ×. Ми перевіряємо встановлене додаток, щоб визначити, до якого числа застосовується процентне співвідношення.
Спробуйте зробити розрахунок
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,1200
200 × 0.1 = 20
Від встановленого додатка до робочої кнопки %
-
01 · REA читає calc.exe При запуску програми Calculator код відкриває
ms-calculator:. Потім агент вибирає бібліотеку встановленого додатка. -
02 * REA читає бібліотеку, повертає код обробника %, функція перевіряє оператор і використовує константу
100. - 03 * ваш агент інтерпретує це, пояснює та відтворює правила, звіряє гілку з вихідним кодом Microsoft, а потім спробуйте + і × вище.
Подивіться реальний код і те, як була перевірена відповідь
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
#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 і порівняйте її з оригіналом.
Для виконання етапів настройки і аналізу виберіть свій цільовий об'єкт:
Програми з машинним кодом
Перевірте функції, рядки, посилання та зв'язки між викликами функцій у виконуваних файлах та бібліотеках.
Керівництво по аналізу програм з машинним кодомJavaScript і Electron
Відображайте модулі, маршрути, IPC та власні залежності з папки програми або архіву ASAR.
Робочі процеси додатківАктивність у браузері та під час виконання
Фіксуйте активність обраного браузера або процесу, а потім порівнюйте результати в різних запусках.
Керівництво по спостереженню за браузеромМаєте запитання?
Ознайомтеся з часто задавати питання, поспілкуйтеся з нами по Discord або відкрийте випуск GitHub, щоб дізнатися про помилки та запити функцій.
Приєднатися до спільноти
Діліться результатами досліджень і отримуйте допомогу від інших користувачів REA на Discord. Слідкуйте за оновленнями проекту REA на X.