Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Jackalope — مُشوِّه ثنائي موجَّه بالتغطية لنظامي Windows وmacOS وLinux وAndroid | Kitploit
أدوات/GitHubGitHub/googleprojectzero/jackalope
التحليل الديناميكي (عزل)تحليل الثغرات الأمنيةالهندسة العكسيةالبرمجة النصية والأتمتةمصممي الأخطاءالاختبار العشوائياختبار الاختراقالأدوات والمكوناتتحليل الملفات الثنائية
GitHubgoogleprojectzero/jackalope

Jackalope

مُشوِّه ثنائي موجَّه بالتغطية لنظامي Windows وmacOS وLinux وAndroid

1.4k1576منذ شهر واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Jackalope

Copyright 2020 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

ما هو Jackalope

Jackalope هو أداة fuzzing قابلة للتخصيص وموزعة وموجهة بالتغطية (coverage-guided) قادرة على العمل مع الملفات التنفيذية ذات الصندوق الأسود (black-box binaries).

لماذا fuzzer آخر؟

بينما يوجد الكثير من أدوات fuzzing الجيدة الموجهة بالتغطية التي تعمل على الأهداف التي يتوفر لها الكود المصدري، هناك عدد قليل نسبيًا منها يعمل على الملفات التنفيذية ذات الصندوق الأسود، خاصة على أنظمة تشغيل Windows وmacOS، وتلك الموجودة منها تعتمد بشكل أساسي على قواعد برمجية ليست سهلة التخصيص كثيرًا. الأهداف الأولية لـ Jackalope هي:

  • سهولة التخصيص للأهداف التي قد لا تعمل معها أدوات fuzzing العامة. قد يشمل ذلك
    • Mutators مخصصة
    • آليات توصيل العينات المخصصة
    • Instrumentation مخصص، إلخ.
  • سهولة التوازي (parallelization)، سواء على جهاز واحد أو عبر أجهزة متعددة

ماذا يفعل؟

يمكن استخدام Jackalope بشكل مستقل، لكنه أكثر قوة عند استخدامه كمكتبة، حيث يمكن للمستخدمين إضافة مكونات مخصصة تحل محل السلوك الافتراضي. بشكل افتراضي، يأتي Jackalope مزودًا بـ:

  • Binary instrumentation باستخدام TinyInst
  • مجموعة بسيطة من Mutators العامة لتنسيقات الملفات الثنائية بالإضافة إلى محرك تحوير قائم على القواعد النحوية
  • توصيل العينات عبر ملف أو عبر الذاكرة المشتركة

يمكن تشغيل Jackalope بالتوازي

  • على جهاز واحد: عبر تمرير عدد خيوط الـ fuzzing من خلال معامل سطر الأوامر -nthreads
  • عبر أجهزة متعددة: عبر تشغيل نسخة واحدة كخادم (علم سطر الأوامر -start_server) وجعل أدوات الـ fuzzer على أجهزة العمال تتصل بهذا الخادم (علم سطر الأوامر -server). يقوم الخادم بعد ذلك بجمع وتوزيع العينات والانهيارات والتغطية عبر العمال.

ما الذي لا يفعله؟

لا يتضمن Jackalope حاليًا استراتيجيات تحوير متقدمة. بدلاً من ذلك، يأتي مزودًا بمجموعة من Mutators العامة، والتي ستعمل مع العديد من الأهداف، ومع ذلك يُشجَّع المستخدمون على كتابة Mutators واستراتيجيات تحوير مخصصة وفقًا للأهداف التي يريدون عمل fuzzing لها.

ما هي المنصات المدعومة؟

حاليًا، يتم دعم عمل fuzzing للملفات التنفيذية ذات الصندوق الأسود على أنظمة تشغيل Windows وmacOS وLinux وAndroid.

على Linux، يمكن لـ Jackalope أيضًا العمل مع Sanitizer Coverage (يتطلب الكود المصدري للهدف). هذا الوضع موثق في مستند منفصل.

بناء Jackalope

المتطلب الأساسي: Python 3

  1. افتح طرفية وأعدّ بيئة البناء الخاصة بك إذا لزم الأمر. على Windows، بدلاً من فتح موجه أوامر عام، ستحتاج إلى فتح موجه أوامر Visual Studio للمنصة التي تبني لها، أو تشغيل vcvars64.bat / vcvars32.bat.

  2. انتقل إلى الدليل الذي يحتوي على الكود المصدري.

  3. شغّل الأوامر التالية:

cd Jackalope
git clone --recurse-submodules [email protected]:googleprojectzero/TinyInst.git
(alternately: git clone --recurse-submodules https://github.com/googleprojectzero/TinyInst.git)
mkdir build
cd build
cmake <generator arguments> ..
cmake --build . --config Release

تعتمد معاملات المولّد (generator arguments) على بيئتك. على macOS ستحتاج إلى استخدام -G Xcode، بينما على سبيل المثال على Windows مع Visual Studio 2019 ولبناء 64-بت ستستخدم -G "Visual Studio 16 2019" -A x64. على Linux، لا تُطلب أي معاملات مولّد. عند الترجمة المتقاطعة (cross-compiling) لـ Android، هناك حاجة إلى معاملات cmake إضافية، وهي نفسها الموصوفة في تعليمات بناء TinyInst لـ Android. إذا كنت تعمل على fuzzing لـ Android على جهاز افتراضي يدعم الذاكرة المشتركة عبر /dev/shm، فإن -DANDROID_TARGET=VM يفعّل توصيل العينات عبر الذاكرة المشتركة.

للبناء للتشغيل مقابل ملفات arm64e التنفيذية على macOS، انظر هنا.

هل تحصل على خطأ No CMAKE_C_COMPILER could be found على macOS؟ جرّب تحديث cmake. تأكد أيضًا من تثبيت Xcode وأنك شغّلته مرة واحدة على الأقل (فهو يثبّت بعض المكونات عند التشغيل الأول).

تشغيل Jackalope

الاستخدام:

./fuzzer <fuzzer arguments> <instrumentation and other components arguments> -- <target command line>

معاملات سطر الأوامر التالية مدعومة:

-in - دليل الإدخال (الدليل الذي يحتوي على مجموعة العينات الأولية). إذا كان دليل الإدخال هو "-"، يحاول الـ fuzzer استعادة الجلسة السابقة (نفس استخدام علم -restore).

-out - دليل الإخراج

-t - مهلة العينة بالمللي ثانية

-t1 - مهلة تهيئة الهدف (على سبيل المثال قبل الوصول إلى دالة الهدف إذا كانت محددة). القيمة الافتراضية هي مهلة العينة.

-nthreads - عدد خيوط الـ fuzzer. القيمة الافتراضية هي 1.

-delivery <file|shmem> - آلية توصيل العينات المراد استخدامها. إذا كانت file، يتم إخراج كل عينة كملف ويُستبدل "@@" في معاملات الهدف بمسار الملف. إذا كانت shmem، ينشئ الـ fuzzer ذاكرة مشتركة بدلاً من ذلك ويستبدل "@@" في معاملات الهدف باسم الذاكرة المشتركة. في هذه الحالة تقع على عاتق الهدف مسؤولية فتح الذاكرة المشتركة واستخراج العينة. القيمة الافتراضية هي file.

-file_extension - عند استخدام توصيل العينات عبر file، يضيف الامتداد المحدد إلى اسم الملف. مفيد إذا كان الهدف يتوقع أن يكون لملفات الإدخال امتداد معين.

-restore أو -resume - يستعيد ويستأنف جلسة fuzzing سابقة. يدعم كل من عملية الـ fuzzer وعملية الخادم الاستعادة.

-server - يحدد خادم التغطية المراد استخدامه.

-start_server - تشغيل عملية خادم بدلاً من عملية fuzzing.

-crash_retry - عدد المرات لمحاولة إعادة إنتاج انهيار. القيمة الافتراضية هي 10. الانهيارات التي لا يُعاد إنتاجها خلال هذا العدد من المحاولات أو لا يُعاد إنتاجها عند التشغيل بدون instrumentation تُصنَّف كمتقلبة (flaky).

-coverage_retry - عدد المرات لإعادة محاولة إنتاج تغطية جديدة. التغطية التي لا يمكن إعادة إنتاجها بشكل موثوق خلال هذا العدد من المحاولات تُعتبر متقلبة. العينات التي تحتوي فقط على تغطية متقلبة لا يتم حفظها.

-clean_target_on_coverage - إعادة تشغيل الهدف عند إعادة إنتاج التغطية. القيمة الافتراضية هي true.

-minimize_samples - محاولة تصغير العينات الجديدة قبل حفظها في المجموعة (corpus). القيمة الافتراضية هي true.

-iterations_per_round - عدد المرات لتحوير وتشغيل عينة من المجموعة قبل الانتقال إلى العينة التالية. القيمة الافتراضية هي 1000. قد تفكر في تقليل هذه القيمة للأهداف البطيئة جدًا.

-deterministic_mutations - استخدام التحويرات الحتمية بالإضافة إلى غير الحتمية. القيمة الافتراضية هي true ما لم يُستخدم علم -server.

-deterministic_only - إعطاء الأولوية للتحويرات الحتمية. ملاحظة: حتى مع هذا العلم، سيظل الـ fuzzer يستخدم تحويرات غير حتمية، ولكن فقط بعد استنفاد جميع التحويرات الحتمية. قد يكون مفيدًا عند التشغيل مع -server أن تقوم نسخة عميل واحدة بتنفيذ التحويرات الحتمية.

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

-keep_samples_in_memory - ما إذا كان يجب الاحتفاظ دائمًا بجميع العينات في الذاكرة. القيمة الافتراضية هي true. يُوصى به ما لم تكن المجموعة كبيرة جدًا بحيث لا تتسع في الذاكرة.

-track_ranges - تفعيل ميزة تتبع نطاق القراءة. مزيد من المعلومات هنا.

-dry_run - يجعل Jackalope يخرج بعد معالجة جميع عينات الإدخال، ولكن قبل بدء الـ fuzzing الفعلي. مفيد لتصغير المجموعة (ملاحظة: Jackalope يضيف فقط العينات التي تحتوي على تغطية لم تُشاهد سابقًا إلى مجموعة الإخراج) أو إعادة إنتاج عدد كبير من الانهيارات.

تنزيل الأداة