چیت‌شیت

مهندسی معکوس با rea

Reverse Engineering with rea

نسخه‌ی rea 6.7.0 همراه با Ghidra 12.1.4: بازرسی باینری‌ها، خواندن رکوردهای شواهد و مقایسه‌ی بسته‌ها.

  • ۱۰ بخش
  • ۱۴ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. مرز میان rea و Ghidra
  2. یک بازرسی، گام‌به‌گام
  3. یک باینری، از ابتدا تا انتها
  4. کار با بسته‌های شواهد
  5. پرسیدن یک سؤال از rea
  6. دستورها و متغیرهای محیطی
  7. نسخه‌های ثابت (Pins) و محدودیت‌ها
  8. عیب‌یابی
  9. پرسش و پاسخ
  10. نکات کاربردی

مرز میان rea و Ghidra

معماری
یک پرسشیک نشستاتصال به GhidraبازرسیCLI ابزار reaیک پرسش در هر فراخوانیسرور MCP ابزار rea207 ابزار، 6 پرامپتBinarySessionیک هدف فعالrea-artifact-graphبدون نیاز به GhidraGhidraProvideranalyzeHeadless و یک سوکت

یک بازرسی، گام‌به‌گام

گام‌به‌گام
  1. فراخوانندهاجرای rea inspect-artifact fixtures/ledger-arm64-O1 --format json. هیچ اجرایی از Ghidra آغاز نمی‌شود.
  2. rea-artifact-graphهش کردن فایل با SHA-256 و تشخیص فرمت از روی بایت‌های جادویی (magic bytes).
  3. مانیفستیک گره و یک رخداد، با مقدار fail برای integrity_policy.
  4. پاسخرکورد شواهد در کمتر از یک ثانیه و بدون نیاز به Java برمی‌گردد.

یک باینری، از ابتدا تا انتها

کد
bash
rea doctor --provider ghidra                   # آیا ارائه‌دهنده سالم است؟
rea inspect-artifact <path>                    # گراف دست‌سازه‌ی فایل، بدون Ghidra
rea analyze <path> --provider ghidra           # سگمنت‌ها، تعداد رویه‌ها و رشته‌ها
rea function <path> <name> --provider ghidra   # پرونده‌ی کامل یک رویه
rea decompile <path> <name> --provider ghidra  # شبه‌کد یک رویه

کار با بسته‌های شواهد

کار و کد
وظیفهکد
فهرست کردن رکوردهای یک بسته بدون بار داده (payload)rea inspect-evidence-bundle '{"path":"<bundle>", "detail": "summary"}'
نوشتن نسخه‌ی استاندارد (canonical) با کلیدهای مرتب‌شدهrea evidence-export <bundle> <out>
اعتبارسنجی تمام شناسه‌های رکورد و مانیفست یک بستهrea evidence-import <bundle>
مقایسه‌ی دو بسته بر اساس عضویت رکوردهاrea compare <left> <right>
نگاشت آدرس مجازی به آفست فایلrea address-to-file-offset <path> <address> --provider ghidra

پرسیدن یک سؤال از rea

کار و کد
وظیفهکد
بررسی Ghidra و محیط اجراییrea doctor --provider ghidra --format json --filter-output healthy,environment_healthy,scope,scope_checks
فهرست کردن قابلیت‌هاrea capabilities --format json
بازرسی یک دست‌سازهrea inspect-artifact fixtures/ledger-arm64-O1 --format json
بازرسی ساختار Mach-O روی macOSrea inspect-macho

دستورها و متغیرهای محیطی

دستورها
دستورعملکرد
rea functionفراخوانی analyze_function برای یک پرونده به ازای هر رویه
rea decompileفراخوانی procedure_pseudo_code برای دریافت شبه‌کد
rea analyzeفراخوانی binary_overview برای کل باینری
GHIDRA_INSTALL_DIRمسیر نصب Ghidra، در غیر این صورت مسیر Homebrew

نسخه‌های ثابت (Pins) و محدودیت‌ها

پیش‌فرض‌ها
تنظیمپیش‌فرضیادداشت
rea6.7.0نسخه‌ی بسته‌ی rea-agents
Ghidra12.1.4بیلد PUBLIC
JDKOpenJDK 21.0.12.1JAVA_HOME یا مسیر Homebrew
One-shot Ghidra call7 to 9 sوارد کردن (Import) به یک پروژه‌ی جدید
integrity_policyfailپارامتر inspect-artifact

عیب‌یابی

عیب‌یابی
  • شکست بررسی در rea doctor

    علت
    یافت نشدن rea 6.7.0، Ghidra 12.1.4 یا JDK 21
    راه‌حل
    نسخه‌ی مشخص‌شده را نصب کنید و دوباره rea doctor را اجرا کنید
  • نخستین فراخوانی Ghidra بین 7 تا 9 ثانیه طول می‌کشد

    علت
    Ghidra فایل را به یک پروژه‌ی جدید وارد می‌کند
    راه‌حل
    یک نشست MCP را باز نگه دارید
  • دستور inspect-binary-layout خطای capability_unavailable بازمی‌گرداند

    علت
    از پروفایل pwntools استفاده می‌کند که فقط مخصوص Linux x64 است
    راه‌حل
    آن را روی Linux x64 اجرا کنید، یا در macOS از rea inspect-macho استفاده نمایید

پرسش و پاسخ

پرسش و پاسخ
آیا inspect-artifact به Ghidra نیاز دارد؟
خیر. در کمتر از یک ثانیه و بدون نیاز به Java پاسخ می‌دهد.
کدام دستور شبه‌کد یک تابع را می‌دهد؟
rea decompile، که procedure_pseudo_code را فراخوانی می‌کند.
نخستین فراخوانی روی یک فایل جدید چیست؟
اجرای rea inspect-artifact. به هیچ موتوری نیاز ندارد.

نکات کاربردی

نکته‌ها
  • از rea رکورد شواهد بخواهید، و هنگام شک و تردید لیستینگ خود Ghidra را بررسی کنید.
  • برای یک تک‌پرسش از CLI و برای نشستی شامل پرسش‌های متعدد از سرور MCP استفاده کنید.
  • برای اولین پرسش Ghidra روی یک فایل، انتظار 7 تا 9 ثانیه زمان را داشته باشید، و پس از آن در حد چند میلی‌ثانیه.