چیتشیت
مهندسی معکوس با rea
Reverse Engineering with rea
نسخهی rea 6.7.0 همراه با Ghidra 12.1.4: بازرسی باینریها، خواندن رکوردهای شواهد و مقایسهی بستهها.
فهرست مطالب
مرز میان rea و Ghidra
معمارییک بازرسی، گامبهگام
گامبهگام- فراخوانندهاجرای
rea inspect-artifact fixtures/ledger-arm64-O1 --format json. هیچ اجرایی از Ghidra آغاز نمیشود. - rea-artifact-graphهش کردن فایل با SHA-256 و تشخیص فرمت از روی بایتهای جادویی (magic bytes).
- مانیفستیک گره و یک رخداد، با مقدار
failبرایintegrity_policy. - پاسخرکورد شواهد در کمتر از یک ثانیه و بدون نیاز به 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 روی macOS | rea inspect-macho |
دستورها و متغیرهای محیطی
دستورها| دستور | عملکرد |
|---|---|
rea function | فراخوانی analyze_function برای یک پرونده به ازای هر رویه |
rea decompile | فراخوانی procedure_pseudo_code برای دریافت شبهکد |
rea analyze | فراخوانی binary_overview برای کل باینری |
GHIDRA_INSTALL_DIR | مسیر نصب Ghidra، در غیر این صورت مسیر Homebrew |
نسخههای ثابت (Pins) و محدودیتها
پیشفرضها| تنظیم | پیشفرض | یادداشت |
|---|---|---|
rea | 6.7.0 | نسخهی بستهی rea-agents |
Ghidra | 12.1.4 | بیلد PUBLIC |
JDK | OpenJDK 21.0.12.1 | JAVA_HOME یا مسیر Homebrew |
One-shot Ghidra call | 7 to 9 s | وارد کردن (Import) به یک پروژهی جدید |
integrity_policy | fail | پارامتر 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 ثانیه زمان را داشته باشید، و پس از آن در حد چند میلیثانیه.