العودة إلى التحديثات
New releaseAug 20, 2026

rhabdomancer v0.10.0

مساعد أبحاث الثغرات الأمنية الذي يحدد مواقع استدعاءات دوال API التي قد تكون غير آمنة في ملف ثنائي.

مشاركة

rhabdomancer

build doc

"الطريق إلى الثغرات القابلة للاستغلال معبّد بثغرات غير قابلة للاستغلال."

-- Mark Dowd

Rhabdomancer هو إضافة IDA سريعة جداً تعمل بدون واجهة رسومية (headless)، وتحدد مواقع استدعاء دوال API غير الآمنة محتملة في ملف ثنائي. يمكن للمدققين تتبع الأثر العكسي من هذه النقاط المرشحة للعثور على مسارات تسمح بالوصول إلى مدخلات غير موثوقة.

الميزات

  • تجربة مستخدم سريعة جداً وبدون واجهة رسومية بفضل IDA 9.x وربطات idalib-rs بلغة Rust.
  • دعم أهداف ثنائية C/C++ مُجمّعة لأي بنية معمارية تدعمها IDA.
  • طباعة مواقع استدعاءات دوال API السيئة إلى stdout وتمييزها في ملف IDB.
  • تجميع دوال API السيئة المعروفة في مستويات من الخطورة للمساعدة في ترتيب أولويات أعمال التدقيق.
    • [BAD 0] أولوية عالية - دوال تُعتبر غير آمنة بشكل عام.
    • [BAD 1] أولوية متوسطة - دوال مثيرة للاهتمام يجب فحصها بحثاً عن حالات استخدام غير آمنة.
    • [BAD 2] أولوية منخفضة - مسارات الكود التي تتضمن هذه الدوال يجب فحصها بعناية.
  • يمكن تخصيص قائمة دوال API السيئة المعروفة بسهولة عن طريق تعديل conf/rhabdomancer.toml.

المقالات

انظر أيضاً

التثبيت

أسهل طريقة للحصول على أحدث إصدار هي عبر crates.io:

  1. قم بتنزيل وتثبيت وتهيئة IDA (انظر https://hex-rays.com/ida-pro).
  2. قم بتثبيت LLVM/Clang (انظر https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. على Linux/macOS، قم بالتثبيت كما يلي:
    export IDADIR=/path/to/ida # إذا لم يتم تعيينه، سيتحقق سكربت البناء من المواقع الشائعة
    cargo install rhabdomancer --locked
    
    أما على Windows، فاستخدم الأوامر التالية:
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # إذا لم يتم تعيينه، سيتحقق سكربت البناء من المواقع الشائعة
    cargo install rhabdomancer --locked
    

الترجمة (Compiling)

بدلاً من ذلك، يمكنك البناء من المصدر:

  1. قم بتنزيل وتثبيت وتهيئة IDA (انظر https://hex-rays.com/ida-pro).
  2. قم بتثبيت LLVM/Clang (انظر https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. على Linux/macOS، قم بالترجمة كما يلي:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    export IDADIR=/path/to/ida # إذا لم يتم تعيينه، سيتحقق سكربت البناء من المواقع الشائعة
    cargo build --release --locked
    
    أما على Windows، فاستخدم الأوامر التالية:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # إذا لم يتم تعيينه، سيتحقق سكربت البناء من المواقع الشائعة
    cargo build --release --locked
    

الاستخدام

  1. تأكد من أن IDA مهيأة بشكل صحيح مع ترخيص صالح.
  2. قم بتخصيص قائمة دوال API السيئة المعروفة في conf/rhabdomancer.toml إذا لزم الأمر. يمكنك تجاوز موقع ملف الإعداد الافتراضي عن طريق تعيين متغير البيئة RHABDOMANCER_CONFIG.
  3. تأكد من تعيين متغير البيئة IDADIR إذا كان تثبيت IDA لديك في موقع غير قياسي.
  4. قم بالتشغيل كما يلي:
    rhabdomancer <binary_file>
    
    سيتم تحديث أي ملف IDB موجود بامتداد .i64؛ وإلا، سيتم إنشاء ملف IDB جديد.
  5. افتح ملف IDB الناتج بامتداد .i64 باستخدام IDA.
  6. اختر View > Open subviews > Bookmarks
  7. استمتع بنتائجك مجمعة بشكل ملائم في نافذة IDA.

[!NOTE] يضيف Rhabdomancer أيضاً تعليقات في مواقع الاستدعاءات المميزة.

التوافق

يتم دعم أحدث إصدار من IDA رسمياً فقط، لكن الإصدارات الأقدم قد تعمل أيضاً. يلخص الجدول التالي أحدث إصدار متوافق لكل إصدار من IDA:

إصدار IDAأحدث إصدار متوافق
v9.0.240925v0.2.4
v9.0.241217v0.3.5
v9.1.250226v0.6.2
v9.2.250908v0.7.6
v9.3.260213v0.8.1
v9.3.260327v0.9.0
v9.3.260421v0.9.3
v9.4.260714الإصدار الحالي

[!NOTE] راجع توثيق idalib-rs للحصول على معلومات إضافية.

الإشادات

تم دعم تطوير هذا المشروع من قبل المنظمات التالية:

سجل التغييرات

المهام المستقبلية

  • إثراء قائمة دوال API السيئة المعروفة بشكل أكبر (انظر https://github.com/0xdea/semgrep-rules).
  • النظر في توسيع نطاق التطبيع في normalize_name لتغطية المزيد من الحالات.
  • تنفيذ مجموعة قواعد أساسية بأسلوب VulFi وVulnFanatic.

الفئات