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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
difuze — Fuzzer لبرامج تشغيل نواة لينكس | Kitploit
أدوات/GitHubGitHub/ucsb-seclab/difuze
أمان أندرويدتحليل الثغرات الأمنيةالاختبار العشوائيتحليل الملفات الثنائية
GitHubucsb-seclab/difuze

difuze

Fuzzer لبرامج تشغيل نواة لينكس

عرض المستودع
3858558منذ 4 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

difuze: مختبر للتعمية على برامج تشغيل نواة لينكس

License

يحتوي هذا المستودع على جميع المصادر (بما في ذلك نصوص الإعداد) التي تحتاجها لتشغيل difuze.

تم اختباره على

Ubuntu >= 14.04.5 LTS

0. تشغيل difuze من Docker

راجع ملف readme

كما هو موضح في بحثنا، هناك مكونان رئيسيان لـ difuze: استعادة الواجهة و محرك التعمية

1. استعادة الواجهة

تعتمد آلية استعادة الواجهة على تحليلات LLVM المارة. كل خطوة من خطوات استعادة الواجهة مكتوبة كممرات فردية. اتبع التعليمات أدناه حول كيفية تشغيل استعادة الواجهة.

1.1 الإعداد

تتولى هذه الخطوة تثبيت LLVM و c2xml:

أولاً، تأكد من أن لديك libxml (مطلوب لـ c2xml):

sudo apt-get install libxml2-dev
sudo pip install lxml

بعد ذلك، قمنا بإنشاء نص برمجي واحد، يقوم بتنزيل وبناء جميع الأدوات المطلوبة.

cd helper_scripts
python setup_difuze.py --help
usage: setup_difuze.py [-h] [-b TARGET_BRANCH] [-o OUTPUT_FOLDER]

optional arguments:
  -h, --help        show this help message and exit
  -b TARGET_BRANCH  Branch (i.e. version) of the LLVM to setup. Default:
                    release_38 e.g., release_38
  -o OUTPUT_FOLDER  Folder where everything needs to be setup.

مثال:

python setup_difuze.py -o difuze_deps

لإكمال الإعداد، تحتاج أيضًا إلى تعديلات في متغير البيئة PATH المحلي. سيعطيك نص الإعداد التغييرات الدقيقة التي تحتاجها.

1.2 البناء

يعتمد هذا على إتمام الإعداد بنجاح الإعداد. لدينا نص برمجي واحد يبني كل شيء، على الرحب والسعة.

cd InterfaceHandlers
./build.sh

1.3 التشغيل

يعتمد هذا على إتمام البناء بنجاح البناء. لتشغيل مكونات استعادة الواجهة على برامج تشغيل النواة، نحتاج أولاً إلى تحويل برامج التشغيل إلى كود LLVM bitcode.

1.3.1 بناء النواة

أولاً، نحتاج إلى نواة قابلة للبناء. وهذا يعني أنه يجب أن تكون قادرًا على تجميع النواة باستخدام إعداد البناء المعتاد. أي make. نلتقط أولاً مخرجات أمر make، ومن هذا المخرج نستخرج أمر التجميع الدقيق.

1.3.1.1 توليد مخرجات make
الخيار 1: استخدام Bear (موصى به)
  1. قم بتثبيت Bear
  2. قم بتشغيل make باستخدام Bear:
    bear make <جميع خيارات make>
    
    مثال: bear make -j8

سيؤدي هذا إلى إنشاء ملف compile_commands.json في الدليل الحالي.

الخيار 2

ما عليك سوى تمرير V=1 وإعادة توجيه المخرجات إلى الملف. مثال:

make V=1 O=out ARCH=arm64 > makeout.txt 2>&1

ملاحظة: لا تستخدم عمليات متعددة أي -j. سيؤدي تشغيل وضع المعالجة المتعددة إلى إفساد ملف المخرجات حيث تحاول عمليات متعددة الكتابة إلى ملف المخرجات.

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

1.3.2 تشغيل تحليل استعادة الواجهة

جميع خطوات استعادة الواجهة المختلفة مغلفة في نص برمجي واحد helper_scripts/run_all.py كيفية التشغيل:

cd helper_scripts
python run_all.py --help

usage: run_all.py [-h] [-l LLVM_BC_OUT] [-a CHIPSET_NUM] [-m MAKEOUT]
                  [-c COMPJSON] [-g COMPILER_NAME] [-n ARCH_NUM] [-o OUT]
                  [-k KERNEL_SRC_DIR] [-isclang] [-clangp CLANG_PATH]
                  [-llvmlinkp LLVMLINK_PATH] [-skb] [-skl] [-skp] [-skP]
                  [-ske] [-skI] [-ski] [-skv] [-skd] [-f IOCTL_FINDER_OUT]

optional arguments:
  -h, --help            show this help message and exit
  -l LLVM_BC_OUT        Destination directory where all the generated bitcode
                        files should be stored.
  -a CHIPSET_NUM        Chipset number. Valid chipset numbers are:
                        1(mediatek)|2(qualcomm)|3(huawei)|4(samsung)
  -m MAKEOUT            Path to the makeout.txt file.
  -c COMPJSON           Path to the compile_commands_json generated by Bear.
  -g COMPILER_NAME      Name of the compiler used in the makeout.txt, This is
                        needed to filter out compilation commands. Ex: aarch64
                        -linux-android-gcc
  -n ARCH_NUM           Destination architecture, 32 bit (1) or 64 bit (2).
  -o OUT                Path to the out folder. This is the folder, which
                        could be used as output directory during compiling
                        some kernels.
  -k KERNEL_SRC_DIR     Base directory of the kernel sources.
  -isclang              flag to indicate that clang was used to built the
                        kernel
  -clangp CLANG_PATH    Absolute path to the clang binary (if not provided,
                        the one available in the path will be used)
  -llvmlinkp LLVMLINK_PATH
                        Absolute path to the llvm-link binary (if not
                        provided, the one available in the path will be used)
  -skb                  Skip LLVM Build (default: not skipped).
  -skl                  Skip Dr Linker (default: not skipped).
  -skp                  Skip Parsing Headers (default: not skipped).
  -skP                  Skip Generating Preprocessed files (default: not
                        skipped).
  -ske                  Skip Entry point identification (default: not
                        skipped).
  -skI                  Skip Generate Includes (default: not skipped).
  -ski                  Skip IoctlCmdParser run (default: not skipped).
  -skv                  Skip V4L2 ioctl processing (default: not skipped).
  -skd                  Skip Device name finder (default: not skipped).
  -f IOCTL_FINDER_OUT   Path to the output folder where the ioctl command
                        finder output should be stored.


يقوم النص البرمجي ببناء وربط وتشغيل استعادة الواجهة على جميع برامج التشغيل المعترف بها، ونتيجة لذلك قد يستغرق وقتًا طويلاً (45 دقيقة - 90 دقيقة).

يقوم النص البرمجي أعلاه بالمهام التالية في وضع متعدد المعالجات للاستفادة من جميع أنوية وحدة المعالجة المركزية:

1.3.2.1 بناء LLVM
  • ممكّن افتراضيًا.

سيتم وضع جميع ملفات bitcode التي تم إنشاؤها في المجلد المقدم للوسيطة -l. تستغرق هذه الخطوة وقتًا طويلاً، اعتمادًا على عدد الأنوية لديك. لذا، إذا كنت قد أكملت هذه الخطوة بالفعل، يمكنك تخطيها بتمرير -skb.

1.3.2.2 ربط جميع ملفات bitcode لبرنامج التشغيل في ملف bitcode موحد.
  • ممكّن افتراضيًا

يقوم هذا بإجراء الربط، حيث يمر عبر جميع ملفات bitcode ويحدد ملفات bitcode ذات الصلة التي يجب ربطها ويربطها (باستخدام llvm-link) في ملف bitcode موحد (سيتم تخزينه بجانب ملف bitcode المقابل).

على غرار الخطوة أعلاه، يمكنك تخطي هذه الخطوة بتمرير -skl.

1.3.2.3 تحليل الرؤوس لتحديد حقول دالة الإدخال.
  • ممكّن افتراضيًا.

تبحث هذه الخطوة عن إعلانات نقاط الدخول في ملفات الرأس وتخزن تكوينها في الملف: hdr_file_config.txt تحت دليل بناء LLVM.

للتخطي: -skp

1.3.2.4 تحديد نقاط الدخول في جميع ملفات bitcode الموحدة.
  • ممكّن افتراضيًا

تحدد هذه الخطوة جميع نقاط الدخول عبر جميع ملفات bitcode الموحدة لبرامج التشغيل. سيتم تخزين المخرجات في ملف: entry_point_out.txt تحت دليل بناء LLVM.

مثال على محتويات ملف entry_point_out.txt:

IOCTL:msm_lsm_ioctl:/home/difuze/kernels/pixel/msm/sound/soc/msm/qdsp6v2/msm-lsm-client.c:msm_lsm_ioctl.txt:/home/difuze/pixel/llvm_out/sound/soc/msm/qdsp6v2/llvm_link_final/final_to_check.bc
IOCTL:msm_pcm_ioctl:/home/difuze/kernels/pixel/msm/sound/soc/msm/qdsp6v2/msm-pcm-lpa-v2.c:msm_pcm_ioctl.txt:/home/difuze/pixel/llvm_out/sound/soc/msm/qdsp6v2/llvm_link_final/final_to_check.bc

للتخطي: -ske

1.3.2.5 تشغيل أداة البحث عن أوامر ioctl على جميع نقاط الدخول المحددة.
  • ممكّن افتراضيًا.

ستقوم هذه الخطوة بتشغيل مكون استعادة الواجهة الرئيسي (IoctlCmdParser) على جميع نقاط الدخول في ملف entry_point_out.txt. سيتم تخزين المخرجات لكل نقطة دخول في المجلد المقدم للخيار -f.

للتخطي: -ski

1.4 مثال:

سنقدم الآن مثالاً من النقطة التي يكون لديك فيها مصادر النواة إلى نقطة الحصول على نتائج استعادة الواجهة.

تنزيل الأداة