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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Binvariants — إطار اختبارات تشويش موجه بالثوابت على مستوى السجلات للبرامج الثنائية مغلقة المصدر، يستفيد من انتهاكات الثوابت المحتملة لاكتشاف الأعطال والأخطاء في الملفات التنفيذية الثنائية. | Kitploit
أدوات/GitHubGitHub/futureslab/binvariants
تحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيتحليل الملفات الثنائية
GitHubfutureslab/binvariants

Binvariants

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

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Binvariants: توجيه التجريب العشوائي للثنائيات بالثباتيات على مستوى السجلات

شعار Binvariants

يوفر هذا المستودع الكود المصدري لـ Binvariants: إطار عمل أولي للتجريب العشوائي يستفيد من انتهاكات الثباتيات المحتملة على مستوى السجلات لاختبار الثنائيات.

تم تقديم هذا العمل في ورقتنا البحثية Binvariants: Enhancing Fuzzing of Closed-source Binary Executables via Register-level Likely Invariants، والتي ستظهر في المؤتمر الدولي ACM لهندسة البرمجيات (FSE'26) لعام 2026.

  • تثبيت Binvariants
  • استخدام Binvariants
  • ملاحظات إضافية
  • حافظة الأخطاء المكتشفة


سير عمل Binvariants
سير عمل Binvariants

الاستشهاد بهذا المستودع: @inproceedings{yang:binvariants, title = {Binvariants: Enhancing Fuzzing of Closed-source Binary Executables via Register-level Likely Invariants}, author = {Zao Yang and Stefan Nagy}, year = {2026}, issue_date = {July 2026}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {3}, number = {FSE}, journal = {Proc. ACM Softw. Eng.}}
المطورون:Zao Yang ([email protected]) و Stefan Nagy ([email protected])
الترخيص:رخصة MIT
إخلاء مسؤولية:يتم توفير هذا البرنامج كما هو دون أي ضمان.

تثبيت Binvariants

تم بناء Binvariants على أساس AFL++ و QEMU-AFL. قم بتثبيت التبعيات المطلوبة من قبل هذه المشاريع قبل إعداد Binvariants:

root@kitploit:~
sudo apt-get update
sudo apt-get install -y build-essential python3-dev automake cmake git flex bison libglib2.0-dev libpixman-1-dev python3-setuptools cargo libgtk-3-dev
# try to install llvm-18 and install the distro default if that fails
sudo apt-get install -y lld-18 llvm-18 llvm-18-dev clang-18 || sudo apt-get install -y lld llvm llvm-dev clang
sudo apt-get install -y gcc-$(gcc --version|head -n1|sed 's/\..*//'|sed 's/.* //')-plugin-dev libstdc++-$(gcc --version|head -n1|sed 's/\..*//'|sed 's/.* //')-dev
sudo apt-get install -y meson ninja-build # for QEMU mode

يتضمن Binvariants مكونين:

  • 1-Invariant_Learner/
  • 2-Fuzzer/

لبناء كل منهما، انتقل إلى الدليل الخاص به وقم بتشغيل الأوامر التالية:

root@kitploit:~
./1_patch.sh
./2_build.sh

استخدام Binvariants

Example/ يحتوي على نصوص برمجية وحالات اختبار لاستخدام Binvariants لاختبار الثنائية nconvert. يمكنك تعديل النصوص لاختبار ثنائيات أخرى.

الإعداد

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

root@kitploit:~
sudo sysctl -w kernel.randomize_va_space=0

تعلم الثباتيات المحتملة على مستوى السجلات (RLIs)

لتعلم الثباتيات، قم بتشغيل:

root@kitploit:~
./Example/1-learn_invs.sh [جذر_Binvariants]

سيتم حفظ الثباتيات المستنتجة في الدليل المحدد بواسطة BINV_TRACES_DIR في 1-learn_invs.sh، باسم: [PROGRAM]_trace_qemu_invs.

التجريب العشوائي باستخدام RLIs

لبدء التجريب العشوائي باستخدام Binvariants، قم بتشغيل:

root@kitploit:~
./Example/2-fuzz.sh [جذر_Binvariants] [مدة_التجريب] [رقم_المحاولة]

على سبيل المثال، قم بتشغيل المحاولة الأولى لحملة تجريب عشوائي مدتها 48 ساعة من الدليل الجذر لـ Binvariants:

root@kitploit:~
./Example/2-fuzz.sh $PWD 48h 1

ملاحظات إضافية

فيما يلي تحسينات محتملة لـ Binvariants.

تعلم الثباتيات بشكل تكيفي

حاليًا، يتعلم Binvariants الثباتيات قبل التجريب العشوائي ثم يقوم بتشغيل التجريب بشكل منفصل. التحسين المحتمل هو تعلم الثباتيات أثناء التجريب وتحديثها عند حدوث انتهاكات، مما يسمح للتغذية الراجعة بالتطور مع الوقت.

اعتبارات التصميم المحتملة:

  1. إذا تم تحديث الثباتيات أثناء تنفيذ حالة اختبار تتعطل لاحقًا أو تنتهي مهلتها، فقد يلزم التراجع عن التحديث. الحل العملي هو تطبيق التحديثات على نسخة من الثباتيات والالتزام بها فقط إذا اكتملت حالة الاختبار بشكل طبيعي (أي FSRV_RUN_OK).
  2. مع استمرار التجريب وتحديث الثباتيات، ستصبح الانتهاكات أقل تواترًا بشكل طبيعي. هذا يخاطر بأن يقوم AFL++ بتحديد حالات الاختبار المبكرة بشكل متكرر (التي تسبب المزيد من الانتهاكات ولكنها تمثل حالات برنامج أقل تطورًا). قد يكون من الضروري إجراء تعديل على الوزن/perf_score/top_rated في جانب AFL++ لضمان تحديد حالات اختبار أحدث وأكثر تمثيلاً.

الثباتيات عبر الكتل الأساسية

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

حافظة الأخطاء المكتشفة

إذا وجدت أي أخطاء أخرى باستخدام Binvariants، فيرجى إخبارنا!

شكر وتقدير

هذه المادة مبنية على عمل مدعوم من المؤسسة الوطنية للعلوم (NSF) بموجب الجائزة رقم 2419798، ومن وكالة مشاريع البحوث المتطورة الدفاعية (DARPA) بموجب الجائزة رقم FA8750-24-2-0002، الجائزة الفرعية رقم GR105409-SUB00001384.

تنزيل الأداة
البرامجالأخطاء المبلغ عنها
nconverthttps://newsgroup.xnview.com/viewtopic.php?t=49598
xls2csvhttps://github.com/vbwagner/catdoc/issues/6, https://github.com/vbwagner/catdoc/issues/7, https://github.com/vbwagner/catdoc/issues/8, https://github.com/vbwagner/catdoc/issues/9, https://github.com/vbwagner/catdoc/issues/10, https://github.com/vbwagner/catdoc/issues/11, https://github.com/vbwagner/catdoc/issues/12, https://github.com/vbwagner/catdoc/issues/13
gpmfhttps://github.com/gopro/gpmf-parser/issues/201, https://github.com/gopro/gpmf-parser/issues/202, https://github.com/gopro/gpmf-parser/issues/203
hdf5https://github.com/HDFGroup/hdf5/issues/5831, https://github.com/HDFGroup/hdf5/issues/5832, https://github.com/HDFGroup/hdf5/issues/5834
stormhttps://github.com/ladislav-zezula/StormLib/issues/397, https://github.com/ladislav-zezula/StormLib/issues/398
mp4splithttps://github.com/axiomatic-systems/Bento4/issues/1038, https://github.com/axiomatic-systems/Bento4/issues/1039
cpdfhttps://github.com/johnwhitington/camlpdf/issues/75
sfconverthttps://github.com/mpruett/audiofile/issues/73