
مهارة Claude Code لهندسة عكسية لثنائيات C++ x86 ذات 32 بت وترتيب البايتات الصغير (جداول الدوال الافتراضية، RTTI، استعادة الوراثة)
مهارة Claude Code skill لهندسة العكس للثنائيات 32-bit little-endian x86 (IA-32) والتفكيك المُجمَّع من C++. تستعيد تخطيطات الأصناف (class layouts)، وجداول الدوال الافتراضية (vtables)، والإرسال الافتراضي (virtual dispatch)، وتسلسلات RTTI/الوراثة من ثنائيات ELF أو PE، وتغطي سير العمل الذي يظهر بمجرد امتلاكك لهذا الهيكل: استعادة صيغة ملف مخصصة، وربط المدخلات المفهرسة لملف بيانات بالكود/الكيان الذي يستخدمها، والتعرف على التعتيم أو حيل مكافحة التنقيح على طول الطريق.
مبنية لاستخدام الوكيل: SKILL.md هو نقطة الدخول التي يقرأها الوكيل، مكتوبة بحيث يتم تحميل العمل الميكانيكي المحدد جيدًا (تخطيطات بنية ABI، حل إعادة التموضع، فك تشفير الرموز) مسبقًا إلى JSON منظم عبر scripts/recon.py بدلاً من إنفاقه كجهد استدلالي على التفكيك الخام. كل شيء يتدهور بأمان إلى وصفات يدوية objdump/readelf/nm/GDB إذا لم تكن الأدوات الأكثر تطورًا (radare2، LIEF، Triton) متاحة.
| المجال | آلي؟ | الموقع |
|---|
ELF/Itanium ABI (GCC/Clang، _Z-mangled): vtables، RTTI، الوراثة المتعددة/الافتراضية | نعم -- scripts/recon.py | references/itanium-abi.md |
PE/MSVC ABI (?-mangled): __thiscall، vftable، Complete Object Locator، vbtable، فحص .rdata المجرد | يدوي / نصي | references/msvc-abi.md |
| استعادة صنف C++ آليًا عبر OOAnalyzer (Pharos / SWI-Prolog) | نعم -- CLI / JSON | references/tool-recipes.md §12 |
| إسناد حقول جدول البيانات واستعادة البنية (تحليل الخطوة، أظرفة الإزاحة، استنتاج النوع) | وصفة يدوية (REWARDS/TIE) | references/tool-recipes.md §13 |
| تحليل ثنائي برمجي (مكنسات xref الفورية، التفكيك التكراري، كشف الحدود) | قابل للبرمجة النصية (Python + Capstone + LIEF) | references/tool-recipes.md §14 |
| محمّلات صيغ ملفات ثنائية مخصصة (لا تتضمن أصناف C++) | وصفة يدوية | references/tool-recipes.md §9 |
| استعادة ربط الموارد: ربط المدخلات المفهرسة لملف بيانات بالكود/المالك الذي يستخدمها | وصفة يدوية + scripts/backward_slice.py (تقطيع خلفي قائم على Triton) | references/tool-recipes.md §10 |
| التحليل الديناميكي WinDbg/DbgEng (ثنائيات PE الأصلية على Windows التي لا يستطيع GDB الاتصال بها) | وصفة يدوية | references/tool-recipes.md §11 |
| التعرف على التعتيم (كود غير مفيد، مسندات مبهمة، حيل تفادي xref) | وصفة يدوية | references/obfuscation.md |
| التعرف على تقنيات مكافحة التنقيح | وصفة يدوية | references/anti-debugging.md |
objdump، readelf، nm، c++filt، gdb (binutils/GDB القياسية، موجودة على أي جهاز Linux تقريبًا).r2pipe، وpip install lief capstone pwntools -- تفتح الوصفات الآلية/المنظمة؛ بدونها، يحتوي references/tool-recipes.md على بدائل يدوية لكل شيء.scripts/backward_slice.py فقط: triton-library (مشروع تحليل الثنائيات JonathanSalwan/Triton) في بيئة افتراضية مخصصة -- لا تقم بـ pip install triton-library في بيئتك العادية إذا كان لديك أي أدوات تعلم آلي مثبتة (PyTorch، vLLM، إلخ)، لأن حزمة OpenAI غير ذات الصلة لمترجم نواة GPU قابلة للاستيراد أيضًا باسم triton وتتصادم الحزمتان. راجع AGENTS.md وسلسلة التوثيق الخاصة بالسكربت نفسه.git clone [email protected]:gavmor/x86-cpp-reversing-skill.git ~/.agents/skills/x86-cpp-reversing
ln -s ~/.agents/skills/x86-cpp-reversing ~/.claude/skills/x86-cpp-reversing
سيلتقطها Claude Code تلقائيًا للمطالبات مثل "ماذا يفعل هذا الـ .exe"، أو "استعد تسلسل الأصناف من هذا الثنائي"، أو "لماذا ينهار هذا داخل استدعاء افتراضي" -- راجع وصف SKILL.md لشروط التشغيل الكاملة.
SKILL.md نقطة الدخول: سير العمل، خطوات الفرز، جدول مقاومة التبرير، معايير الخروج
AGENTS.md تعليمات للوكلاء الذين يحررون محتوى هذا المستودع نفسه
scripts/recon.py فرز ثابت قائم على LIEF + استعادة vtable/RTTI لـ Itanium ABI
scripts/backward_slice.py تقطيع خلفي قائم على Triton (يحتاج بيئته الافتراضية الخاصة، انظر أعلاه)
references/itanium-abi.md تفاصيل ELF/Itanium ABI
references/msvc-abi.md تفاصيل PE/MSVC ABI
references/tool-recipes.md أوامر ملموسة، حسب المهمة (من الفرز حتى §14)
references/obfuscation.md التعرف على التعتيم المتعمد
references/anti-debugging.md التعرف على تقنيات مكافحة التنقيح
إذا كنت توسّع محتوى هذه المهارة نفسه (وليس مجرد استخدامها ضد ثنائي هدف)، اقرأ AGENTS.md أولاً -- على وجه الخصوص، معياره بشأن التحقق من الاستشهادات بالأدوات/المكتبات/الأوراق الخارجية مقابل المصدر الأساسي قبل أن تستقر في references/*.md.