Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
xtride — أداة استرداد الأنواع القائمة على N-gram للثنائيات، تقوم باسترداد الهياكل وتوقيعات الدوال من الكود المُفكك بإنتاجية عالية ونتائج ثقة قابلة للتنفيذ لخطوط الأنابيب الآلية. | Kitploit
أدوات/GitHubGitHub/pr0me/xtride
التحليل الثابتالهندسة العكسيةمصممي الأخطاءتحليل الملفات الثنائيةتعلم الآلةالأوراق والأبحاثالتعلم والتعليمتحليل البرامج الثابتة
GitHubpr0me/xtride

xtride

أداة استرداد الأنواع القائمة على N-gram للثنائيات، تقوم باسترداد الهياكل وتوقيعات الدوال من الكود المُفكك بإنتاجية عالية ونتائج ثقة قابلة للتنفيذ لخطوط الأنابيب الآلية.

عرض المستودع
261منذ شهر واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

XTRIDE: استرداد الأنواع العملي القائم على N-gram

مقدمة

xtride paper نقدم XTRIDE، وهو نهج محسّن يعتمد على n-gram (راجع STRIDE) لاسترداد الأنواع في الملفات الثنائية مع التركيز على العملية: حيث تتيح الإنتاجية المحسّنة للغاية ودرجات الثقة القابلة للتنفيذ النشر في خطوط الأنابيب الآلية. عند مقارنتها بأحدث ما توصلت إليه تقنيات استرداد الهياكل، تحقق طريقتنا أداءً مشابهاً مع كونها أسرع بمقدار يتراوح بين 70 و 2300 مرة.




تعليمات البناء

أداة CLI في ./bin تتطلب تثبيت مكتبة الإصدار 1.8.4 أو أحدث لـ hdf5 (وفقًا لوثائق الصندوق (crate)). البناء بأحدث إصدار يفشل على MacOS، نوصي بتثبيت hdf5 v1.10، على سبيل المثال باستخدام:

root@kitploit:~
brew install [email protected]

كيفية استخدام أداة CLI

  1. إنشاء مجموعة بيانات مميزة على الشكل، انظر تحضير مجموعة البيانات.
  2. إنشاء تقسيمات مجموعة البيانات
    root@kitploit:~
    cargo run --release -- create-dataset -i ../new_dataset/ -o ./
    
  3. بناء قاموس المفردات
    root@kitploit:~
    cargo run --release -- build-vocab ./xtride_plus_train.jsonl xtride_plus.vocab -t type
    
  4. بناء قواعد بيانات n-gram لـ n = {2, 4, 8, 12, 48} (حدد في bin/src/db_creation.rs).
    root@kitploit:~
    cargo run --release -- build-all-dbs -t type -k 5 --flanking -o xtride_plus_dbs/ ./xtride_plus_train.jsonl xtride_plus.vocab
    
  5. تقييم على تقسيم مجموعة الاختبار
    root@kitploit:~
    cargo run --release -- evaluate --threshold-sweep ./xtride_plus_test.jsonl xtride_plus.vocab ./out_xtride.json --flanking --db-dir ./xtride_plus_dbs
    

وضع الاسترداد

استخدم recover لتشغيل استرداد الأنواع بأفضل جهد على قائمة دالة واحدة مفككة (إدخال نص عادي).

توقعات الإدخال

  • دالة واحدة لكل ملف
  • يُوصى باستخدام أسماء رموز على غرار مفكك الترجمة (مثل var*، param*، stack*، iVar*، sub_*)
  • التنبؤات تكون جيدة بقدر التوافق بين أسلوب إدخالك وتوزيع بيانات التدريب

مثال استخدام أساسي

root@kitploit:~
cargo run --release -- recover ./decompiled_function.c \
    --vocab ./xtride_plus.vocab \
    --db-dir ./xtride_plus_dbs \
    --flanking \
    --top-k 5 \

العلامات الاختيارية

  • --fn-vocab <path>: مسار قاموس مفردات الدوال الصريح (إذا تم حذفه، يحاول recover استخدام <vocab_stem>.fn.vocab)
  • --strip: تمكين وضع الشريط الكامل القديم (توافق خلفي مع DIRT / STRIDE، استخدم بحذر)
  • --threshold <float>: إخفاء التنبؤات أقل من حد النتيجة (1.0 يعطل التصفية)
  • --top-k <int>: عدد المرشحين المعروضين لكل رمز (الافتراضي: 5)

تفسير المخرجات

الدرجات المعروضة هي درجات ترتيب من نوع الثقة من خط أنابيب النموذج. إنها مفيدة للترتيب النسبي والتصفية، وليست احتمالات معايرة. يقدم الملخص الرموز المكتشفة، والرموز المصفاة، والرموز التي لا تحتوي على مخرجات نموذجية.

النماذج المقدمة

نقوم بتضمين البيانات المعالجة مسبقًا لتكرار نماذج $XTRIDE_{PLUS}$ الموصوفة في ورقتنا البحثية في دليل ./data. يمكن استخدام ملفات JSONL مباشرة لاستخراج قاموس مفردات وتدريب النموذج (الخطوات 3 وما بعدها، اختر تكوين 16-db في bin/src/db_creation.rs). على الرغم من أن مجموعة بيانات التدريب تتضمن كمية كبيرة من البيانات من مجموعة واسعة من الملفات الثنائية، نود التأكيد على أن قابلية تعميم الأساليب القائمة على n-gram محدودة. نوصي دائمًا بإضافة عينات خاصة بالمجال إلى مجموعة البيانات، اعتمادًا على المكان الذي تخطط لاستخدام النموذج فيه.

تحتوي مجموعة البيانات المقدمة على عينات تكون:

  • مجردة (stripped)
  • ملفات ثنائية ELF
  • تم جمعها من Ghidra

محاولة تشغيل الاستدلال على عينات تنحرف عن هذا التوزيع ستؤدي على الأرجح إلى تنبؤات غير قابلة للاستخدام.

مجموعات البيانات

يتم تضمين مزيد من المعلومات حول كيفية استخراج البيانات لمجموعات بيانات جديدة أو إعادة التدريب والتقييم على مجموعة بيانات DIRT في وثائق تحضير مجموعة البيانات.

التكامل مع مفكك الترجمة

تعرض وحدة retyper تطبيقًا مرجعيًا للتكامل العميق لنظام استرداد الأنواع XTRIDE مع مفكك الترجمة. يتم حجز الوظيفة خلف علامة ميزة ويمكن تفعيلها باستخدام cargo build --features retyper.

نستخدم إطار BIAS من Binarly لتحليل البرامج والذي تم نشره كجزء من VulHunt. يتميز الإطار بنظام كتابة معبّر يتكامل بسلاسة مع fork من الخلفية المفككة لـ Ghidra المستخدمة لرفع التمثيلات المستردة داخليًا إلى لغة C زائفة. قمنا بتوسيع هذا fork وواجهة ffi الخاصة به بواجهات تسمح بتعديل أنواع المتغيرات مباشرة في المفكك. وهذا يتيح التطبيق المباشر للأنواع المستنتجة ضمن سياق المفكك، بما في ذلك نشر أنواع الحقول وما شابه ذلك.

قبل:بعد:
without_typestypes_recovered

لمزيد من المعلومات والأمثلة، راجع منشور مدونتنا.

بشكل عام، يتطلب أي تكامل مع مفكك الترجمة طبقة ترجمة من التنبؤات النصية (من قاموس المفردات) إلى تمثيل خاص بالأداة. التنسيق المستخدم في DIRT معبر بما يكفي للسماح بذلك ولكنه يتطلب حلاً متكررًا للأنواع (على سبيل المثال، في الهياكل) وحسابًا يدويًا للإزاحات والأحجام (جميع المعلومات الضرورية موجودة، بما في ذلك التعليقات التوضيحية للحشو). بالنسبة لوحدة retyper، يجب أن تكون الأنواع في قاموس المفردات (وبالتالي في مجموعة بيانات التدريب) مسلسلة أنواع BIAS. لا نخطط حاليًا لنشر خط أنابيب كامل لاستخراج البيانات وإنشاء مجموعة البيانات، وبالتالي نعتبر هذا تطبيقًا مرجعيًا وليس دليلاً كاملاً على المفهوم (PoC).

الاقتباس

إذا كنت تستخدم الكود أو التقنيات أو النتائج المقدمة مع هذا المستودع والورقة المقابلة، يرجى الاستشهاد بعملنا على النحو التالي:

root@kitploit:~
@inproceedings{Seidel_Practical_Type_Inference_2026,
    author = {Seidel, Lukas and Thomas, Sam L. and Rieck, Konrad},
    title = {{Practical Type Inference: High-Throughput Recovery of Real-World Structures and Function Signatures}},
    series = {The 16th ACM Conference on Data and Application Security and Privacy},
    month = jun,
    year = {2026},
    url = {https://arxiv.org/abs/2603.08225},
}
تنزيل الأداة