إنتقل إلى المحتوى الرئيسي

نظرة عامة على الهندسة

نظرة عميقة على الهندسة الداخلية لباطن، وقرارات التصميم، وسبب وجود كل مكون.

الهندسة عالية المستوى​

مبادئ التصميم الأساسية​

1. صفر كود غير آمن​

#![forbid(unsafe_code)]

لماذا؟ أدوات الأمان يجب أن تكون آمنة بنفسها. أخطاء فساد الذاكرة في محلل الملفات يمكن استغلالها بملفات خبيثة مصممة.

2. الدفاع في العمق​

باطن لا يثق أبداً بطريقة كشف واحدة:

  • البايتات السحرية
  • التحقق من الامتداد
  • التحقق من البنية
  • فحص الإنتروبيا
  • فحص المحتوى

3. استخدام الموارد المحدود​

كل عملية محدودة الموارد:

الموردالحدالتكوين
الذاكرةmax_read_bytes3KB افتراضياً
الوقتtimeout_ms5 ثوانٍ افتراضياً
إدخالات الأرشيفMAX_ARCHIVE_ENTRIES10,000
حجم الأرشيفMAX_TOTAL_EXTRACTED_SIZE100MB

4. ضمان عدم التوقف​

مختبر ضد أي إدخال لضمان عدم التوقف:

// جميع واجهات البرمجة العامة تعيد Result<T, DetectionError>
pub fn from_bytes(data: &[u8], config: &DetectionConfig) -> Result<Self>

تنظيم الوحدات​

src/
├── lib.rs # الأنواع الأساسية، واجهة البرمجة الرئيسية
├── main.rs # نقطة دخول CLI
├── utils.rs # أدوات البايت
│
├── detection/ # كشف الملفات
│ ├── signatures.rs # قاعدة بيانات البايتات السحرية
│ ├── entropy.rs # إنتروبيا شانون
│ ├── polyglot.rs # كشف الصيغ المتعددة
│ └── embedded.rs # التهديدات المضمنة
│
├── analysis/ # التحليل العميق
│ ├── validation.rs # التحقق من البنية
│ ├── forensics.rs # تصنيف الأجزاء
│ └── binary.rs # تحليل PE/ELF
│
├── io/ # عمليات I/O
│ ├── batch.rs # المعالجة المتوازية
│ ├── archive.rs # فحص الأرشيف
│ └── hasher.rs # هاش الملفات
│
└── cli/ # واجهة سطر الأوامر
├── scanner.rs # أمر الفحص
├── watcher.rs # أمر المراقبة
└── console.rs # تنسيق الواجهة

سلامة الخيوط​

قاعدة بيانات التوقيعات​

pub static SIGNATURE_DB: LazyLock<RwLock<SignatureDatabase>> = 
LazyLock::new(|| RwLock::new(SignatureDatabase::default()));

لماذا LazyLock<RwLock<...>>?

  1. LazyLock: التهيئة مرة واحدة، عند أول وصول
  2. RwLock: قراء متعددون، كاتب واحد
  3. آمن: لا حاجة للتزامن اليدوي

للمساهمين

فهم الهندسة يساعدك على:

  • معرفة أين تضيف ميزات جديدة
  • الحفاظ على أنماط تصميم متسقة
  • كتابة كود فعال وآمن
  • فهم لماذا اتُخذت القرارات

راجع دليل المساهمة للبدء في المساهمة!