reverse-engineering (REA-Native) — الهندسة العكسية الأصيلة
الغرض: تفكيك وفهم أي binary/تطبيق مُجمّع (لا مصدر له) — دفاعي/أكاديمي/تحليل برمجياتنا. مُستلهَم من منهجية REA (morluto/rea، 270K نجمة) لكن مبني أصيلاً مستقراً بأدوات مفتوحة مجانية، بلا تبعية لريبو متقلّب (1027 issue).
🔴 الخط الأحمر (محتوى)
دفاعي · أكاديمي (تخريج النخبة السيبرانية — «من يتعلّم الدفاع دون رؤية الهجوم = مدافع أعزل») · تحليل malware في sandbox معزول · تحليل برمجياتنا/KCPC القديمة. ❌ لا هندسة عكسية لمنتجات تجارية محمية بغرض النسخ (EULA/DMCA). تحليل malware الحيّ (frida/تشغيل) → On-Demand GPU/sandbox معزول فقط (خط أحمر أمني بعد اختراق 08-24).المحرّكات (كلها مفتوحة مجانية، مُختبَرة حيّاً 2026-10-16)
- binutils:
file/strings/objdump/readelf/nm(triage + disasm + symbols) - capstone 6.0 (disasm متعدد المعماريات) · pyelftools · lief 0.17 (ELF/PE/Mach-O موحّد)
- radare2 6.2.4 (
r2/rabin2) + r2pipe (functions + xrefs + تحليل عميق) - jadx 1.5.6 (APK→Java كامل، مثبّت brew، مُختبَر E2E jadx_rc=0) · binwalk 3.1.0 (firmware، مثبّت brew) ·
dotnet/ilspycmd(.NET) - 🆕 Ghidra 12.1.4 headless (
/data/re-tools/ghidra_12.1.4_PUBLIC، decompiler → C pseudo-code مقروء، سكربت Java أصيلGhidraDecompile.java، مُختبَر E2E) — يسدّ آخر فجوة بين REA وترسانتنا - 🆕 Frida 17.24 (
/data/.local/bin/frida، تحليل ديناميكي runtime hooks — 🔴 ساندبوكس معزول فقط، الأداة تبني سكربت hook لا تُنفّذ) - البيئة:
/usr/bin/python3(numpy 2.3.5 سليم) + Java 26.
الاستخدام
cd skills/reverse-engineering
/usr/bin/python3 re_engine.py selftest # 8/8 + كل المحرّكات (+ decompile/trace)
Clean-Room Re-Implementation (إثراء 2026-10-16، مُستلهَم من RaeedXA 348K):
/usr/bin/python3 clean_room.py selftest # 6/6 (legal-gate + spec + brief)
/usr/bin/python3 clean_room.py legal-check "<desc>" # فحص المشروعية (دفاعي/أكاديمي فقط)
/usr/bin/python3 clean_room.py spec <binary> # behavior → مواصفات مهيكلة
/usr/bin/python3 clean_room.py reimplement <binary> [--lang python|c|js] [--context "..."] # behavior→spec→code أصيل
🔴 خط أحمر: دفاعي/أكاديمي/ملكنا/KCPC فقط — legal-gate يحجب المنتجات التجارية المحمية (EULA/DMCA)
/usr/bin/python3 re_engine.py triage <file> # فحص أولي (نوع/حماية/strings مثيرة)
/usr/bin/python3 re_engine.py info <file> # بنية كاملة (lief: format/arch/imports/sections)
/usr/bin/python3 re_engine.py strings <file> [--min N]
/usr/bin/python3 re_engine.py disasm <file> [--func NAME] [--addr 0x..] [--n N]
/usr/bin/python3 re_engine.py functions <file> # قائمة الدوال (r2 aflj)
/usr/bin/python3 re_engine.py behavior <file> # evidence-backed: API حقيقي + سلوك مُستنتَج + risk
/usr/bin/python3 re_engine.py report <file> # تقرير RE كامل (كل المراحل، JSON)
/usr/bin/python3 re_engine.py apk <file.apk> # Android (jadx أو zip/strings fallback)
/usr/bin/python3 re_engine.py firmware <fw.bin> [--extract] # firmware/IoT (binwalk 3.1: راوترات/كاميرات → استخراج نظام الملفات + كشف backdoors)
🆕 تكامل Ghidra + Frida (2026-10-16، سدّ آخر فجوة مع REA):
/usr/bin/python3 re_engine.py decompile <file> [--limit N] # Ghidra → C pseudo-code مقروء (never-stop: Ghidra→r2 pdc→objdump)
/usr/bin/python3 re_engine.py trace <file> [--funcs a,b,c] # Frida → سكربت hook ديناميكي (🔴 عزل إلزامي — sandbox حصراً، لا يُنفّذ binary مجهول)
🆕 Ghidra Decompiler (C pseudo-code — الفجوة المُسدودة)
decompile يعطي C مقروء (r2 يعطي asm فقط). never-stop: Ghidra (analyzeHeadless + GhidraDecompile.java أصيل، لا PyGhidra) → r2 pdc → objdump. مدمج في report (أهم 8 دوال) + diagram. مُثبَت E2E: add_secret → return param_2+param_1+0x539; (1337 بالضبط). المسار في env.sh (GHIDRA_HEADLESS).🔴 Frida Dynamic Trace (عزل أمني إلزامي)
trace يولّد سكربت Frida JS احترافي (Interceptor.attach + لوج الوسائط) لدوال افتراضية (open/read/write/connect/send/recv/system/exec/fopen/socket) أو مخصصة (--funcs). 🔴 خط أحمر 08-24: الأداة تبني السكربت + تحذّر، ❌ لا تنفّذ binary مجهول على السيرفر الحيّ. التشغيل الفعلي حصراً داخل sandbox/On-Demand GPU معزول، يدوياً بعد مراجعة.المنهجية (جوهر REA — evidence-backed)
behavior يميّز دليلين: API/symbols (قاطع، imports فعلية عبر lief+nm) عن strings (داعم/قد يكون عابراً — يحتاج دليلين+ لتجنّب false-positive). يصنّف 8 فئات سلوكية (network/file_io/process/crypto/persistence/anti_analysis/memory_inject/keylogging) + risk score (API=وزن مضاعف). لا تخمين — كل استنتاج مدعوم بدليل.never-stop
أي أداة ناقصة (jadx/frida/dotnet) تُتخطّى بأناقة بـfallback (zip/strings)، لا انهيار. gcc غائب → selftest يستخدم ELF نظام حقيقي.متى (auto-trigger)
أي طلب: تحليل binary/malware دفاعي · فهم تطبيق مُجمّع بلا مصدر · تحليل APK/صلاحيات · هندسة عكسية لبرمجيات KCPC القديمة · تدريب أمن سيبراني أكاديمي. يُثري: academic-dean السيبراني + engineering-design-stack + computer-use + breach-intelligence.⚡ Fast-Path المرجع التكتيكي (مُستخلَص من leanrea، 2026-10-20 — توفير tokens/turns)
مُستخلَص أصالةً منaicodeking/leanrea (⭐1055، MIT) — إرشاد تكتيكي يُثري re_engine (لا يحلّ محلّه):
1. Route أولاً بالـmagic bytes: file -b <T> + البايتات السحرية → اختَر الأرخص (triage) قبل أي decompile/قراءة كود.
2. لا cat لملف كبير/minified أبداً: قطّعه — rg -o '.{0,200}NEEDLE.{0,200}' F | head. أخرِج الـdisasm مرة لملف ثم grep الملف.
3. ابحث الأشجار المستخرَجة بـ rg -uu (bundlers تُخفي الكود: Electron .webpack//.vite/؛ rg العادي يتخطّى المخفي).
4. Batch probes في استدعاء shell واحد بـ ; + echo '--- name' markers + سقف كل مخرَج بـhead/-m.
5. Evidence-marking (مطابق behavior في re_engine): كل ادعاء = seen (file:offset/symbol/string) أو inferred؛ ما لم يُوجَد = unknown لا «غائب». القراءة الساكنة ≠ تنفيذ مُلاحَظ.
6. إعادة البناء (clean-room): اكتب أدنى reimplementation ثم اختبره ضد الأصل (نفس المدخلات=نفس المخرجات).
القرار (نقد 9 مستويات): ❌ لا تبنٍّ لـleanrea (عندنا re_engine أقوى: أدوات مُنفّذة فعليًا Ghidra/Frida/capstone لا مجرد إرشاد). ✅ استخلاص خريطة الـfast-path التكتيكية = إثراء يوفّر tokens/turns (leanrea أثبت 60% أقل tokens بنفس الدقة).