Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
rustdllproxy — Generate Proxy DLLs in Rust | Kitploit
أدوات/GitHubGitHub/johnswiftc/rustdllproxy
Payload GenerationPersistence MechanismsPost-ExploitationPenetration TestingRed TeamingPayload Development
GitHubjohnswiftc/rustdllproxy

rustdllproxy

Generate Proxy DLLs in Rust

عرض المستودع
564منذ 2 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

rustdllproxy


أداة Rust crate مساعدة لتوليد وتطوير ملفات DLL وكيلة (proxy DLLs) لتطبيقات Windows بسهولة.

التثبيت

root@kitploit:~
cargo install rustdllproxy

التوافق

تدعم هذه الحزمة (crate) حالياً تنسيق PE القياسي لملفات DLL فقط.

القيود الحالية

  • عند ربط (Hook) الدوال بكود مخصص، يجب معرفة توقيع الدالة
    • يمكن العثور على ذلك باستخدام أدوات التفكيك والهندسة العكسية مثل Ghidra

الأوامر

تأتي أداة Rustdllproxy مع أمرين فرعيين:

الأمرالغرض
rustdllproxy newإنشاء crate من نوع cdylib وكيل جديد من ملف DLL واحد أو أكثر.
rustdllproxy buildمزامنة ملف .def مع src/lib.rs وبناء crate.
root@kitploit:~
rustdllproxy --help        # top-level help
rustdllproxy new --help    # generation flags
rustdllproxy build --help  # build flags

إنشاء Crate جديد

ملاحظة سريعة حول الاستراتيجية

قبل إنشاء crate الخاص بك، قرر كيف تريد أن يعمل الوكيل (proxy). النمط الشائع هو اختطاف ترتيب البحث (search order hijacking)، حيث تقوم أولاً بإعادة تسمية DLL الهدف إلى اسم مثل target_.dll، ثم تستخدم الوكيل المُجمَّع كـ target.dll. وينتج عن ذلك تدفق يشبه binary -> target.dll -> target_.dll.

هناك مسارات متعددة أمامك حسب حالة الاستخدام. ومع ذلك، إذا كنت بحاجة إلى إعادة تسمية DLL الأساسي الذي يتم التوكيل عنه، فحدّث ملف .def المُنشأ وفقاً لذلك.


root@kitploit:~
rustdllproxy new -p path/to/target_.dll -n my_proxy

نصيحة: تم بناء rustdllproxy كواجهة سطر أوامر (CLI) باستخدام clap. قم بتشغيل rustdllproxy --help لرؤية جميع الخيارات والأعلام.

كتابة الخطافات (Hooks)

تدعم مكتبة الماكرو 3 أنواع رئيسية من الخطافات: prehook وposthook وfullhook.

خطوات تنفيذ الخطاف

  1. استبدل التوجيه #[no_mangle] بماكرو الخطاف (اترك التعليق اللاحق //<dllname>.dll في مكانه).

    root@kitploit:~
    #[prehook("dllbeingproxied.dll", "function_name")] //dllbeingproxied.dll
    
  2. املأ توقيع الدالة (قم بتعريف المدخلات كـ mut لتعديلها).

  3. قم بالبناء باستخدام rustdllproxy build.

أنواع الخطافات

prehook

ينفّذ الكود قبل الدالة الأصلية. يتيح لك إضافة وظائف أو تعديل متغيرات الإدخال.

root@kitploit:~
#[prehook("target.dll", "my_function")] //target.dll
fn my_function(mut param1: i32, mut param2: &str) {
    // Your code here - executes before original function
    param1 *= 2;  // Modify parameters if needed
}

posthook

ينفّذ الكود بعد الدالة الأصلية. يمكنك عرض وتعديل القيمة المُرجعة باستخدام المتغير السحري ret.

root@kitploit:~
#[posthook("target.dll", "calculate")] //target.dll
fn calculate(input: i32) -> i32 {
    // Original function executes first
    // Then your code runs with access to 'ret'
    ret = ret * 2;  // Modify return value
}

ملاحظة: يتم تعريف المتغير ret تلقائياً كمتغير قابل للتغيير. لست بحاجة إلى الإشارة إليه إذا لم يكن ضرورياً.

fullhook

يوفر تحكماً كاملاً في تنفيذ الدالة. يمكنك إدارة القيمة المُرجعة واستدعاء الدالة يدوياً.

root@kitploit:~
#[fullhook("target.dll", "do_multi_add")] //target.dll
fn do_multi_add(mut a: i32, mut b: i32, mut c: i32) -> i32 {
    // Pre-processing
    a += 10;
    b += 20;

    // Call original function with magic func()
    let mut return_value: i32 = func(a, b, c);

    // Post-processing
    return_value *= 2;

    // Must explicitly return the value
    return_value
}

بناء الـ Crate

قم بالتشغيل من دليل crate الوكيل (أو مرّره كوسيطة أولى):

root@kitploit:~
rustdllproxy build [PATH] [--profile <name>] [--no-build] [-- <extra cargo args>]

تحذيرات

  • يتم إعادة توليد ملف .def بالكامل في كل بناء، وسيتم استبدال أي تغييرات يدوية. إذا كنت بحاجة إلى إجراء تغييرات يدوية تخالف طريقة بناء rustdllproxy، يمكن استخدام cargo لتحقيق ذلك.
  • يعتمد نظام البناء على التعليقات المُنشأة، وصادرات .def، وأسماء الخطافات لاسترجاع اسم DLL الأساسي قبل البناء. إذا لم تكن هناك معلومات كافية، فسيتم طرح خطأ يشرح كيفية معالجة ذلك.

مثال على سير العمل

لنفترض أنك تريد تعديل office.dll المستخدم في برامج Office عبر اختطاف ترتيب البحث في DLL:

الخطوة 1: تجهيز DLL الأصلي

root@kitploit:~
# Rename the original DLL
mv office.dll office_.dll

الخطوة 2: توليد Crate وكيل

root@kitploit:~
rustdllproxy new -p office_.dll -n office_proxy

الخطوة 3: تنفيذ الخطافات

root@kitploit:~
#[prehook("office_.dll", "open_window")] //office_.dll
fn open_window() {
    // Your custom code here...
    println!("Window is about to open!");
}

الخطوة 4: البناء والنشر

root@kitploit:~
cd office_proxy
rustdllproxy build

توجد ملفات البناء داخل /target

اعتبارات تجميع DLL

من الممكن عمل وكيل لعدة ملفات DLL هدفية باستخدام crate واحد. نادراً ما تُستخدم هذه الميزة وتأتي مع بعض المحاذير المهمة.

عند تجميع عدة ملفات DLL:

  • قد تتغير الأرقام الترتيبية للدوال بسبب ترتيب التصدير
  • نادراً ما يكون هذا مشكلة لأن البرامج الحديثة تستخدم أسماء التصدير للتوافق
  • مفيد بشكل أساسي للتحليل وتطوير التطبيقات المخصصة

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

ملاحظات الإصدار موجودة في CHANGELOG.md.

المساهمة

المساهمات مرحب بها! لا تتردد في تقديم المشكلات (issues) وطلبات السحب (pull requests).

تنزيل الأداة
الخيارالافتراضيالتأثير
PATH.المسار إلى جذر crate الوكيل.
--profile <name>releaseملف تعريف بناء Cargo (release، dev، مخصص).
--no-buildمعطّلإعادة توليد ملف .def مع تخطي cargo build.
-- <args>—تُمرَّر حرفياً إلى cargo build.