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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
rhabdomancer — مساعد أبحاث الثغرات الأمنية الذي يحدد مواقع استدعاءات دوال API التي قد تكون غير آمنة في ملف ثنائي. | Kitploit
أدوات/GitHubGitHub/0xdea/rhabdomancer
التحليل الثابتتحليل الثغرات الأمنيةالهندسة العكسيةتحليل الملفات الثنائية
GitHub0xdea/rhabdomancer

rhabdomancer

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

عرض المستودع
1311529منذ يوم واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

rhabdomancer

build doc

"الطريق إلى الثغرات القابلة للاستغلال مفروش بالثغرات غير القابلة للاستغلال."

-- Mark Dowd

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

الميزات

  • تجربة استخدام سريعة للغاية وبدون واجهة رسومية بفضل IDA 9.x وارتباطات Rust الخاصة بـ idalib-rs.
  • دعم الأهداف الثنائية المكتوبة بلغة C/C++ والمُجمَّعة لأي معمارية تدعمها IDA.
  • تُطبع مواقع استدعاءات دوال API السيئة إلى stdout وتُعلَّم في IDB.
    • مواقع الاستدعاء في كود المكتبات التي يتعرف عليها IDA (مثل وقت تشغيل مرتبط ساكنًا ومطابق لتوقيعات FLIRT) تُوسم بـ (lib).
    • الاستدعاءات عبر الـ stubs (مثل مدخلات .plt في الملفات الثنائية ELF أو stubs الاستيراد في الملفات الثنائية PE وMach-O، والمدرجة كـ thunks) تُتبَّع عكسيًا إلى مستدعيها.
    • في الملفات الثنائية ELF، تُدرج الدالة عمدًا مرتين مع نفس مواقع الاستدعاء: مرة كـ stub الخاص بها في .plt (موسوم كـ thunk) ومرة كاستيراد لها. يُعلَّم كل موقع استدعاء مرة واحدة فقط في IDB.
  • تُجمَّع دوال API السيئة المعروفة في مستويات من السوء للمساعدة في ترتيب أولويات عمل التدقيق.
    • [BAD 0] أولوية عالية - الدوال التي تُعتبر عمومًا غير آمنة.
    • [BAD 1] أولوية متوسطة - دوال مثيرة للاهتمام ينبغي فحصها بحثًا عن حالات استخدام غير آمنة.
    • [BAD 2] أولوية منخفضة - ينبغي فحص مسارات الكود التي تتضمن هذه الدوال بعناية.
  • قائمة دوال API السيئة المعروفة مدمجة ويمكن تخصيصها بسهولة عبر ملف إعدادات مبني على conf/rhabdomancer.toml.
  • تُطابَق أسماء الدوال دون هذه الزخارف: النقاط والشرطات السفلية البادئة (مثل _strcpy)، وبادئات أسماء المكتبات المستعارة (مثل __o_malloc في Universal CRT، و__libc_system و__GI___snprintf في glibc)، و، بالنسبة للـ stubs وهذه الأسماء المستعارة فقط، اللاحقة الرقمية التي يضيفها IDA إلى الأسماء المستخدمة بالفعل (مثل memset_0).

[!NOTE] الدوال المحصَّنة (مثل __strcpy_chk، المستخدمة بدلًا من strcpy عند البناء باستخدام _FORTIFY_SOURCE) لا تُطابَق عمدًا، لأنها النسخ المفحوصة من الدوال المدرجة. لتحديد استدعاءاتها أيضًا، أضفها صراحةً إلى إعدادات مخصصة (مثل "__strcpy_chk" بنفس أولوية strcpy).

المقالات

  • https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
  • https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust

انظر أيضًا

  • https://github.com/0xdea/ghidra-scripts/blob/main/Rhabdomancer.java
  • https://docs.hex-rays.com/release-notes/9_0#headless-processing-with-idalib
  • https://github.com/idalib-rs/idalib
  • https://books.google.it/books/about/The_Art_of_Software_Security_Assessment.html

التثبيت

أسهل طريقة للحصول على أحدث إصدار هي عبر 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 # if not set, the build script will check common locations
    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" # if not set, the build script will check common locations
    cargo install rhabdomancer --locked
    

الترجمة البرمجية

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

  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 # if not set, the build script will check common locations
    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" # if not set, the build script will check common locations
    cargo build --release --locked
    

الاستخدام

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

[!NOTE] يضيف Rhabdomancer أيضًا تعليقات عند مواقع الاستدعاء المحددة. يتم وسم كل من الإشارات المرجعية والتعليقات بـ [BAD n] <function_name>، حيث n هو مستوى الأولوية (0 = عالٍ، 1 = متوسط، 2 = منخفض)، حتى تتمكن السكربتات من البحث عنها في قواعد بيانات IDB. هذا التنسيق مستقر عبر الإصدارات.

التوافق

يُدعم رسميًا أحدث إصدار من 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الإصدار الحالي
v9.4.260915الإصدار الحالي

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

الشكر والتقدير

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

  • HN Security
  • Hex-Rays عبر برنامج المساهمين الخاص بها

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

  • CHANGELOG.md

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

تنزيل الأداة