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

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

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

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

دليل الأدوات

الفئات

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

rhabdomancer

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

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

الأكثر شعبية

عرض الكل →

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

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

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

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

[![](https://img.shields.io/github/stars/0xdea/rhabdomancer.svg?style=flat&color=yellow)](https://github.com/0xdea/rhabdomancer)
[![](https://img.shields.io/crates/v/rhabdomancer?style=flat&color=green)](https://crates.io/crates/rhabdomancer)
[![](https://img.shields.io/crates/d/rhabdomancer?style=flat&color=red)](https://crates.io/crates/rhabdomancer)
[![](https://img.shields.io/badge/ida-9.4-violet)](https://hex-rays.com/ida-pro)
[![](https://img.shields.io/badge/[email protected])](https://twitter.com/0xdea)
[![](https://img.shields.io/badge/[email protected])](https://infosec.exchange/@raptor)
[![build](https://github.com/0xdea/rhabdomancer/actions/workflows/build.yml/badge.svg)](https://github.com/0xdea/rhabdomancer/actions/workflows/build.yml)
[![doc](https://github.com/0xdea/rhabdomancer/actions/workflows/doc.yml/badge.svg)](https://github.com/0xdea/rhabdomancer/actions/workflows/doc.yml)

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

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

![](https://assets.kitploit.com/production/public/readmes/49813/668212019df8d7b843ca6bcd0e68432321528d6d1a229ce774358fa80fbecfb2.png)

## الميزات

- تجربة استخدام سريعة للغاية وبدون واجهة رسومية بفضل 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](https://crates.io/crates/rhabdomancer):

1. نزّل IDA وثبّتها واضبط إعداداتها (انظر <https://hex-rays.com/ida-pro>).
2. ثبّت LLVM/Clang (انظر <https://rust-lang.github.io/rust-bindgen/requirements.html>).
3. على Linux/macOS، ثبّتها كما يلي:
   ```sh
   export IDADIR=/path/to/ida # if not set, the build script will check common locations
   cargo install rhabdomancer --locked
   ```
   على Windows، بدلاً من ذلك، استخدم الأوامر التالية:
   ```powershell
   $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
   ```

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

بدلاً من ذلك، يمكنك البناء من [المصدر](https://github.com/0xdea/rhabdomancer):

1. قم بتنزيل IDA وتثبيته وتكوينه (انظر <https://hex-rays.com/ida-pro>).
2. قم بتثبيت LLVM/Clang (انظر <https://rust-lang.github.io/rust-bindgen/requirements.html>).
3. على Linux/macOS، قم بالترجمة البرمجية على النحو التالي:
   ```sh
   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، بدلاً من ذلك، استخدم الأوامر التالية:
   ```powershell
   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`](https://github.com/0xdea/rhabdomancer/blob/master/conf/rhabdomancer.toml) (اختر الوسم
   الذي يطابق نسختك المثبّتة للحصول على قائمته المدمجة الدقيقة)، وحرّر النسخة، واضبط متغير البيئة `RHABDOMANCER_CONFIG`
   على مساره. يجب أن يعرّف الملف المصفوفات `high` و`medium` و`low`، دون أي مفاتيح أخرى.
   وإلا، تُستخدم القائمة المدمجة، وهي مضمّنة في الملف الثنائي وقت البناء من `conf/rhabdomancer.toml`
   (تحرير ذلك الملف يتطلب إعادة البناء).
3. تأكد من ضبط متغير البيئة `IDADIR` إذا كان تثبيت IDA لديك في موقع غير قياسي.
4. شغّله كما يلي:
   ```sh
   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.240925 | v0.2.4                    |
| v9.0.241217 | v0.3.5                    |
| v9.1.250226 | v0.6.2                    |
| v9.2.250908 | v0.7.6                    |
| v9.3.260213 | v0.8.1                    |
| v9.3.260327 | v0.9.0                    |
| v9.3.260421 | v0.9.3                    |
| v9.4.260714 | الإصدار الحالي           |
| v9.4.260915 | الإصدار الحالي           |

> [!NOTE]
> راجع وثائق [idalib-rs](https://github.com/idalib-rs/idalib) للحصول على معلومات إضافية.

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

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

- [HN Security](https://hnsecurity.it)
- [Hex-Rays](https://hex-rays.com) عبر [برنامج المساهمين](https://hex-rays.com/contributor-program) الخاص بها

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

- [CHANGELOG.md](https://github.com/0xdea/rhabdomancer/blob/master/CHANGELOG.md)

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

- إثراء قائمة دوال API الضارة المعروفة بشكل أكبر (انظر <https://github.com/0xdea/semgrep-rules>).
- تتبع الاستدعاءات عبر thunks خارج مقاطع `.plt` (مثل thunks ‏`j_` الخاصة بالربط التزايدي في MSVC).
- النظر في تخطي وسم مواقع الاستدعاء في كود المكتبات الذي يتعرف عليه IDA (الموسوم حاليًا بـ `(lib)` فقط).
- تنفيذ إخراج مُسلسَل لتسهيل التحليل والتحليل الآلي.
- تنفيذ مجموعة قواعد أساسية على غرار [VulFi](https://github.com/Accenture/VulFi)
  و[VulnFanatic](https://github.com/Martyx00/VulnFanatic).
تنزيل الأداة