Обратное проектирование с помощью вашего агента по кодированию
Узнайте, как
работает программа.
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.