العودة إلى التحديثات
New releaseAug 10, 2026

LibAFL v0.16.0

مكتبة متقدمة للاختبار العشوائي - قم بتجميع أداة الاختبار العشوائي الخاصة بك في Rust! يتوسع عبر الأنوية والأجهزة. لـ Windows و Android و MacOS و Linux و no_std و ...

مشاركة

LibAFL، مكتبة التشويش

شعار LibAFL

مكتبة تشويش متقدمة - قم بتجميع أدوات التشويش الخاصة بك وتوسيع ميزاتها باستخدام Rust.

LibAFL هي مجموعة من القطع القابلة لإعادة الاستخدام من أدوات التشويش، مكتوبة بلغة Rust، حيث تمنحك العديد من فوائد أداة التشويش الجاهزة مع كونها قابلة للتخصيص بالكامل. تتضمن بعض الميزات البارزة حالياً ما يلي:

  • سريعة: نقوم بكل ما نستطيع في وقت الترجمة، مع إبقاء الحمل الزمني التشغيلي في حده الأدنى. يصل المستخدمون إلى 120 ألف عملية تنفيذ في الثانية في وضع Frida على هاتف (باستخدام جميع النوى).
  • قابلة للتوسع: LLMP أو Low Level Message Passing تسمح لـ LibAFL بالتوسع بشكل خطي تقريباً عبر النوى، وعبر TCP إلى أجهزة متعددة.
  • قابلة للتكيف: يمكنك استبدال كل جزء من LibAFL. على سبيل المثال، BytesInput هو مجرد أحد أشكال المدخلات المحتملة: لا تتردد في إضافة مدخلات قائمة على AST للتشويش المنظم، والمزيد.
  • متعددة المنصات: تعمل LibAFL على Windows وmacOS وiOS وLinux وAndroid وغيرها. يمكن بناء LibAFL في وضع no_std لحقن LibAFL في أهداف غامضة مثل الأجهزة المضمنة ومشغّلات الآلات الافتراضية.
  • أحضر هدفك الخاص: نحن ندعم أوضاعاً تعتمد على الثنائي فقط، مثل Frida-Mode، بالإضافة إلى مراحل ترجمة متعددة للتجهيز القائم على المصدر. بالطبع من السهل إضافة المحركات الخلفية الخاصة بك للتجهيز.

المفاهيم الأساسية

LibAFL سريعة، متعددة المنصات، متوافقة مع no_std، وقابلة للتوسع عبر النوى والأجهزة. تقدم كريت رئيسية توفر لبنات بناء لأدوات تشويش مخصصة: libafl وهي مكتبة تحتوي على كود شائع يمكن استخدامه لتجهيز الأهداف، وlibafl_targets وهي مكتبة توفر التسهيلات لتغليف المترجمات، وlibafl_cc. تقدم تكاملات مع أطر التجهيز الشائعة. حالياً، المحركات الخلفية المدعومة هي:

البناء والتثبيت

تثبيت التبعيات

  • لغة تطوير Rust
    • نوصي بشدة بعدم استخدام حزمة توزيع Linux الخاصة بك مثلاً لأنها قد تكون قديمة. لذا قم بتثبيت Rust مباشرةً، يمكن العثور على التعليمات هنا.

    • الحد الأدنى لإصدار Rust المدعوم محدد. يمكنك دائماً التحقق من الإصدار المطلوب حالياً في ملف LibAFL’s Cargo.toml:

      إذا كان إصدار Rust المثبت لديك أقدم من المذكور في Cargo.toml، قم بالتحديث إلى أحدث سلسلة أدوات مستقرة:

      rustup update stable
      
  • أدوات LLVM
    • أدوات LLVM (بما في ذلك clang, clang++) مطلوبة (أحدث من LLVM 15.0.0 حتى LLVM 18.1.3). إذا كنت تستخدم Debian/Ubuntu، نوصي بشدة مرة أخرى بتثبيت الحزمة من هنا
  • Just:
    • نحن نستخدم just لبناء أدوات التشويش في دليل fuzzers/. يمكنك العثور على تعليمات تثبيته في بيئتك في دليل مستخدم Just.

استنساخ مستودع LibAFL باستخدام

git clone https://github.com/AFLplusplus/LibAFL

بناء المكتبة باستخدام

cargo build --release

بناء توثيق API باستخدام

cargo doc

تصفح كتاب LibAFL (قيد التطوير!) باستخدام (يتطلب mdbook)

cd docs && mdbook serve

البدء

نقوم بتجميع جميع أدوات التشويش المثال في ./fuzzers. تأكد من قراءة توثيقها (ومصادرها)، هذه هي الطريقة الطبيعية للبدء!

just run

يمكنك تشغيل كل أداة تشويش مثال باستخدام هذا الأمر التالي، طالما أن دليل أداة التشويش يحتوي على ملف Justfile. أفضل أداة تشويش تم اختبارها هي ./fuzzers/inprocess/libfuzzer_libpng، وهي أداة تشويش متعددة النوى تشبه libfuzzer تستخدم LibAFL لـ harness libpng.

الموارد

المساهمون

LibAFL مكتوب ومُدار بواسطة

المساهمة

يرجى الاطلاع على CONTRIBUTING.md للحصول على إرشادات المساهمة.

التصحيح

لا تعمل أداة التشويش الخاصة بك كما هو متوقع؟ حاول قراءة DEBUGGING.md لفهم كيفية تصحيح مشاكلك.

الاقتباس

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

@inproceedings{libafl,
 author       = {Andrea Fioraldi and Dominik Maier and Dongjia Zhang and Davide Balzarotti},
 title        = {{LibAFL: A Framework to Build Modular and Reusable Fuzzers}},
 booktitle    = {Proceedings of the 29th ACM conference on Computer and communications security (CCS)},
 series       = {CCS '22},
 year         = {2022},
 month        = {November},
 location     = {Los Angeles, U.S.A.},
 publisher    = {ACM},
}

الترخيص

مرخص بموجب إما رخصة Apache، الإصدار 2.0 أو رخصة MIT حسب اختيارك.
ما لم تذكر صراحةً خلاف ذلك، فإن أي مساهمة تُقدم عن عمد لإدراجها في هذه الكريت بواسطتك، كما هو محدد في رخصة Apache-2.0، ستكون مرخصة بشكل مزدوج كما هو مذكور أعلاه، دون أي شروط أو أحكام إضافية.

الفئات