در این صفحه

مهندسی معکوس ، با عامل برنامه نویسی شما

بفهمید نرم‌افزار
چطور کار می‌کند.

REA ابزارهایی در اختیار دستیار برنامه‌نویسی شما می‌گذارد تا برنامه را بررسی کند و رفتار آن را توضیح دهد.

در حال حاضر می دانم دوباره? به راهنماهای تجزیه و تحلیل بروید →

میخوای عمیق تر بری ؟ وبلاگ را بخوانید →

راه اندازی REA

این درخواست را در دستیار برنامه‌نویسی خود وارد کنید:

عامل برنامه نویسی شما

REA را با npx rea-agents@latest setup نصب کن و به این دستیار برنامه‌نویسی متصل کن. ابتدا برنامهٔ تغییرات را نشان بده و منتظر تأیید من بمان. سپس نصب را بررسی کن.

یا این دستور را در ترمینال اجرا کنید:

npx rea-agents@latest setup

برنامهٔ تغییرات را بررسی و تأیید کنید، سپس دستیار را دوباره راه‌اندازی کنید.

اولین بار یا گمشده Node.js یا یک عامل برنامه نویسی ؟ راهنمای راه اندازی گام به گام را دنبال کنید →

مهندسی معکوس چیست؟

فهمیدن شیوهٔ کار نرم‌افزار از راه بررسی خود برنامه.

هدف: درک یک ویژگی به اندازه کافی خوب برای توضیح دهید, تغییرش بده یا دوباره بسازش

مثلاً: چرا ماشین‌حساب برای 200 + 10% عدد 220 را می‌دهد؟

پیش از 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 ماشین حساب. چرا 200 + 10% 220 می دهند؟

مثال پاسخ · بر اساس یافته ها

بعد از + ، دکمه % طول می کشد درصد از عدد اول

10% of 200 = 20200 + 20 = 220
REA چه چیزی فراهم می‌کند
دستورالعمل های کنترل کننده ، کد و تماس های کامپایل شده.
دستیار چه چیزی توضیح می‌دهد
کدام شاخه اعمال می شود ، چه چیزی محاسبه می شود و چگونه آن را بازسازی کنیم.
مونتاژ انتخاب شده از ماشین حساب نصب شده DLL. افکار و پاسخ ها یافته ها را نشان می دهد. با مثال ماشین حساب ادامه دهید ↓

بیایید دو مثال را امتحان کنیم. سرعت بازی را تغییر دهید ، سپس به ماشین حساب برگردید و دکمه % آن را بازسازی کنید.

مثال 01 * بازی دایناسور Chrome

چرا دایناسور سریع‌تر می‌شود؟

هدف
بازی را با سرعت قابل تنظیم
چرا مهندسی معکوس it ؟
برای بازتولید شتاب آن ، ما نیاز داریم قانون در بازی در حال اجرا: چقدر سریع شروع می شود ، چقدر افزایش می یابد و چه زمانی متوقف می شود.

نسخهٔ بازسازی‌شده را بازی کنید

6 → 10 → 13

قانون اصلی: از 6 شروع کنید ، سپس به سمت 13 افزایش دهید.

نوار لغزنده را حرکت دهید تا سرعت خود را تنظیم کنید. فضا یا پرش یک کاکتوس را پاک می کند.

REA چه نتیجه‌ای برگرداند

اسکریپت در واقع در صفحه اجرا می شود. عامل عملکرد به روز رسانی و تنظیمات سرعت خود را می خواند ، سپس از این قانون در یک بازی جدید استفاده می کند.

مثال سریع * بازی دایناسور

برای بازرسی این بازی دایناسور از REA استفاده کنید. چرا سریع تر می شود ؟ قانون سرعت را نشان دهید ، سپس یک نسخه کوچک با سرعت قابل تنظیم بسازید.

هدف بازرسی شده: نسخه مرورگر مشتق شده از Chromium wayou.

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 بود ؛ پس از 10000 ، 13.0 بود ، به یک اعشاری گرد شده بود.

مینی بازی جدید این قانون سرعت را حفظ می کند. کد نقاشی ، پریدن و برخورد آن یک پیاده سازی آموزشی کوچک است. آزمایشگاه را باز کنید برای دیدن کد جدید و اجرای همان بررسی سرعت.

برای بازرسی هدف خود ، مراحل اتصال مرورگر استفاده از صفحه دایناسور. به نماینده خود URL صفحه و نقطه پایان اشکال زدایی محلی خود را بدهید ، سپس دستور بالا را کپی کنید.

کد سرعت بازرسی شده · Chromium نویسندگان * مجوز bsd

مثال 02 * ماشین حساب Windows

دکمهٔ % ماشین‌حساب را بازسازی کنید.

دیدیم چرا 200 + 10% می دهد 220. حالا بیایید قوانین هر دو + و × را بازیابی کنیم و آنها را امتحان کنیم.

هدف
یک ماشین حساب کوچک بسازید که هر دو + و × به درستی.
چرا مهندسی معکوس it ؟
همان دکمه استفاده می کند قوانین مختلف بعد از + و ×. ما برنامه نصب شده را بررسی می کنیم تا دریابیم درصد به کدام شماره اعمال می شود.

محاسبه را امتحان کنید

200 + 20

10 درصد از 200 = 20 سپس 200 + 20 = 220.

تصویر تعاملی از قانون درصد بازرسی شده.

REA چه نتیجه‌ای برگرداند

یک شاخه به 100 تقسیم می شود. دیگری نیز در عدد اول ضرب می شود. عامل از هر دو برای بازسازی دکمه % استفاده می کند.

برای این مثال, previous = 200 و current = 10.

مثال prompt * دکمه % را بازسازی کنید

از REA برای بازرسی دکمه % ماشین حساب Windows استفاده کنید. قوانین را پس از + و × بازیابی کنید ، سپس یک ماشین حساب کوچک بسازید که از هر دو استفاده کند.

خلاصه قابل خواندن از % handler
if (operation == multiply || operation == divide) {
  percent = current / 100;
} else {
  percent = current * previous / 100;
}
با +
10 درصد از عدد اول را بگیرید.10% of 200 = 20 → 200 + 20 = 220
با ×
10% را به 0.1 تبدیل کنید.200 × 0.1 = 20

از برنامه نصب شده به یک دکمه کار %

  1. 01 * REA می خواند calc.exeبرنامه ماشین حساب را راه اندازی می کندکد باز می شود ms-calculator:. سپس نماینده کتابخانه برنامه نصب شده را انتخاب می کند.
  2. 02 * REA کتابخانه را می خواندکد % handler را برگردانیدعملکرد اپراتور را بررسی می کند و از ثابت استفاده می کند 100.
  3. 03 · نماینده شما آن را تفسیر می کندقوانین را توضیح دهید و بازتولید کنیدشاخه را با منبع مایکروسافت بررسی کنید ، سپس + و × بالا را امتحان کنید.
کد واقعی و نحوه بررسی پاسخ را ببینید
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
شناسه های اپراتور * منبع مایکروسافت
#define IDC_MUL 92      // 0x5c
#define IDC_DIV 91      // 0x5b
#define IDC_PERCENT 118 // 0x76

0x64 = 100

بازرسی با REA 4.1.0: Windows ماشین حساب 11.2508.4.0, x64. خلاصه قابل خواندن از نام های منبع عمومی مایکروسافت برای توضیح شاخه بازیابی شده استفاده می کند.

درصد پیاده سازی · موارد تست مایکروسافت · راهنمای راه اندازی بومی

اولین تحقیق شما

REA را در یک برنامه کوچک امتحان کنید.

نمونه یادداشت های ما را دانلود کنید ، صادرات CSV آن را ردیابی کنید و یک ورودی تغییر یافته را بررسی کنید.

مثال هدایت شده را امتحان کنید

می‌خواهید بیشتر بدانید؟

به نماینده خود بگویید که چه چیزی می خواهید درک کنید یا بسازید. با REA ، شما می توانید با هم کار بر روی هر چیزی از شبیه سازی این وب سایت به بازسازی یک بازی از فایل اجرایی آن.

مثال prompt * وب سایت

برای بازرسی از REA استفاده کنید https://reverseengineeranything.app/. این وب سایت را برای من کلان کنید.

بله این یکی

مثال سریع * بازسازی بازی

از REA برای بازسازی این بازی از فایل اجرایی آن استفاده کنید. بازیابی منطق گیم پلی در C و تست آن در برابر اصلی.

مطالعه موردی DX-Ball را ببینید →

برای مراحل راه اندازی و تجزیه و تحلیل ، هدف خود را انتخاب کنید:

برنامه های کد ماشین

توابع ، رشته ها ، مرجع ها و روابط فراخوان تابع را در فایل های اجرایی و کتابخانه ها بازرسی کنید.

تجزیه و تحلیل برنامه های کد ماشین راهنما

JavaScript و Electron

ماژول های نقشه ، مسیرها ، IPC و وابستگی های بومی از یک پوشه برنامه یا آرشیو ASAR.

گردش کار برنامه

مرورگر و فعالیت زمان اجرا

ضبط مرورگر انتخاب شده یا فعالیت فرآیند ، سپس مقایسه نتایج در سراسر اجرا می شود.

راهنمای مشاهده مرورگر

سؤالی دارید؟

سوالات متداول را بخوانید, چت با ما در Discord یا یک شماره GitHub را باز کنید برای اشکالات و درخواست ویژگی.

به جامعه بپیوندید

تحقیقات را به اشتراک بگذارید و از سایر کاربران REA در Discord کمک بگیرید . برای به روز رسانی پروژه ، REA را در X دنبال کنید.

بالا