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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
binbloom — برنامج تحليل البرامج الثابتة الثنائية الخام | Kitploit
أدوات/GitHubGitHub/quarkslab/binbloom
أمان الأنظمة المدمجةالهندسة العكسيةتحليل الملفات الثنائيةتحليل البرامج الثابتة
GitHubquarkslab/binbloom

binbloom

برنامج تحليل البرامج الثابتة الثنائية الخام

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

الأكثر شعبية

عرض الكل →

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

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

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

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

حول

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

الميزات الرئيسية:

  • عنوان التحميل: يمكن لـ binbloom تحليل برنامج ثنائي خام وتحديد عنوان تحميله.
  • Endianness: يمكن لـ binbloom استخدام استدلالات لتحديد نمط endianness للبرنامج الثنائي.
  • قاعدة بيانات UDS: يمكن لـ binbloom تحليل برنامج ثنائي خام والتحقق مما إذا كان يحتوي على مصفوفة تحتوي على معرفات أوامر UDS.

التحميل / التثبيت

أولاً، استنسخ مستودع git:

git clone https://github.com/quarkslab/binbloom.git
cd binbloom

لبناء أحدث إصدار (لينكس فقط):

autoreconf -i
./configure
make
sudo make install

البدء

تحديد endianness والعنوان الأساسي لبرنامج ثنائي

binbloom firmware.bin

يجب أن يعطي هذا الأمر مخرجات مثل هذه:

[i] 32-bit architecture selected.
[i] File read (20480 bytes)
[i] Endianness is LE                                
[i] 6 strings indexed                                    
[i] Found 3 base addresses to test                    
[i] Base address seems to be 0x60000000 (not sure)
 More base addresses to consider (just in case):
  0x005b5000 (0)
  0x0bcd0000 (0)

في هذا المخرج، يعرض السطر الثالث endianness المُخمَّن (LE, little-endian) ويعطي السطر السادس العنوان المُخمَّن (0x60000000). تم تحديد 6 سلاسل نصية و3 عناوين أساسية محتملة. إذا لم يتم تحديد البنية، فإن بنية 32-bit تُعتبر افتراضيًا.

القيمة بين القوسين بعد كل عنوان مرشح هي النتيجة المقابلة. كلما ارتفعت النتيجة، زادت احتمالية صحة العنوان.

تحديد endianness والعنوان الأساسي لبرنامج ثنائي 64-bit

binbloom -a 64 firmware.bin
[i] 64-bit architecture selected.
[i] File read (327680 bytes)
[i] Endianness is LE                                
[i] 717 strings indexed                                  
[i] Found 7535 base addresses to test                 
[i] Base address found: 0x0000000000010000.                          
 More base addresses to consider (just in case):
  0x000000000000e000 (276)
  0x000000000000f000 (242)
  0x0000000000011000 (175)
  0x000000000000d000 (167)
  0x000000000000b000 (121)
  0x0000000000013000 (107)
  0x0000000000012000 (100)
  [...]

الخيار -a يخبر binbloom بأن يأخذ في الاعتبار برنامجًا ثنائيًا 64-bit، ويظهر المخرج أعلاه عنوانًا أساسيًا مُخمَّنًا بقيمة 0x10000.

فرض endianness إذا لم يحصل binbloom على النتيجة الصحيحة

عند التعامل مع برامج ثنائية صغيرة (حجم < 10 كيلوبايت)، قد لا يكون كشف endianness في binbloom موثوقًا وقد يعطي نتيجة خاطئة تؤدي إلى عناوين أساسية غير متوقعة. في هذه الحالة، يمكنك استخدام الخيار -e لتحديد endianness:

binbloom -e be firmware.bin

يُنتج بعد ذلك المخرج التالي:

[i] Selected big-endian architecture.
[i] File read (1048576 bytes)
[i] Endianness is BE
[i] 764 strings indexed                                  
[i] Found 18615 base addresses to test                
[i] Base address seems to be 0x00000000 (not sure).
 More base addresses to consider (just in case):
  0x3f740000 (121043)
  0x7ff48000 (61345)
  0x41140000 (59552)
  [...]

يتم بعد ذلك فرض endianness (في هذه الحالة big-endian) ويعتمد binbloom على هذا التكوين لتخمين العنوان الأساسي.

العثور على قاعدة بيانات UDS (لبرنامج وحدة التحكم الإلكترونية ECU)

binbloom -a 32 -e be -b 0x0 firmware.bin
[i] 32-bit architecture selected.
[i] Selected big-endian architecture.
[i] Base address 0x0000000000000000 provided.
[i] 764 strings indexed                                  
Most probable UDS DB is located at @000ee8c8, found 7 different UDS RID
Identified structure:
struct {
	code *p_field_0;
	code *p_field_1;
	uint32_t dw_2;
}

يعتمد هذا التحليل على استدلالات لذا قد يعطي نتائج إيجابية خاطئة. يجب عليك قراءة قائمة قواعد بيانات UDS المحتملة التي وجدها binbloom والتحقق منها لترى أيها صحيح إن وجد. يوفر binbloom البنية المحددة في مخرجاته، مما يسمح لبعض برامج التفكيك (disassemblers) بتحليل الذاكرة بعد تعريف البنية.

خيارات متقدمة

يمكنك تسريع عملية البحث عن العنوان الأساسي عن طريق تمكين تعدد الخيوط (multi-threading) باستخدام الخيار -t. بشكل افتراضي، يتم استخدام خيط واحد.

binbloom -t 8 firmware.bin

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

إذا كنت تريد أن تعرض الأداة المزيد من المعلومات، استخدم خيار -v مرة أو أكثر.

حول

المؤلفون

  • Guillaume Heilles (@PapaZours)
  • Damien Cauquil (@virtualabs)

الترخيص

يتم توفير binbloom بموجب رخصة Apache 2.0.

تنزيل الأداة