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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
rust_syscalls — استدعاء نظام مباشر وغير مباشر عبر كعب (stub) واحد مع حلّ أرقام خدمات النظام (SSN) في وقت التشغيل لنظام ويندوز. | Kitploit
أدوات/GitHubGitHub/janoglezcampos/rust_syscalls
التهرب من IDS/IPSما بعد الاستغلالالفريق الأحمرتطوير الحمولات
GitHubjanoglezcampos/rust_syscalls

rust_syscalls

استدعاء نظام مباشر وغير مباشر عبر كعب (stub) واحد مع حلّ أرقام خدمات النظام (SSN) في وقت التشغيل لنظام ويندوز.

عرض المستودع
24033منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

RUST_SYSCALLS

كعب (stub) واحد لاستدعاءات النظام المباشرة وغير المباشرة مع حل أرقام SSN في وقت التشغيل لنظام ويندوز.


الميزات:

  • سطر واحد لكل استدعاءات النظام
  • تجزئة اسم الدالة في وقت الترجمة
  • استدعاءات نظام مباشرة أو غير مباشرة
  • دعم x86_64 و WOW64 و x86 الأصلي
  • مصممة للسماح بتنفيذ طرق مخصصة لجلب SSN (راجع نهاية هذا الملف لمزيد من المعلومات)

طريقة الاستخدام:

  1. أضف مستودع git / المسار المحلي للمكتبة إلى تبعياتك:

    rust_syscalls = {git = "https://github.com/janoglezcampos/rust_syscalls"}

    أو

    rust_syscalls = {path = <path to library folder>}

  2. اختر الطريقة المباشرة أو غير المباشرة بتعيين _DIRECT_ أو _INDIRECT_ كميزة:

    rust_syscalls = {path = <path to library folder>}, features = ["_INDIRECT_"]}

  3. الاستيراد

    use rust_syscalls::syscall;

  4. الاستدعاء:

    NTSTATUS status = syscall!("NtClose", handle);


مثال:

root@kitploit:~
    #![allow(non_snake_case)]
    use ntapi::ntapi_base::CLIENT_ID;
    use rust_syscalls::syscall;

    use winapi::shared::ntdef::{OBJECT_ATTRIBUTES, HANDLE, NULL, NTSTATUS, PVOID};
    use winapi::um::winnt::{PROCESS_VM_WRITE, PROCESS_VM_READ, MEMORY_BASIC_INFORMATION};
    use std::mem::size_of;
    
    fn main(){
        let pid             : u64      = 3268; //Process PID
        let currentProcess  : HANDLE = -1isize as _;
        let mem_info_len    : usize = size_of::<MEMORY_BASIC_INFORMATION>() as _;

        let mut handle      : HANDLE   = NULL;
        let mut status      : NTSTATUS;
    
        let mem_info: MEMORY_BASIC_INFORMATION = MEMORY_BASIC_INFORMATION {
            BaseAddress: NULL,
            AllocationBase: NULL,
            AllocationProtect: 0,
            RegionSize: 0,
            State: 0,
            Protect: 0,
            Type: 0,
        };

        let oa : OBJECT_ATTRIBUTES = OBJECT_ATTRIBUTES {
            Length: size_of::<OBJECT_ATTRIBUTES>() as _,
            RootDirectory: NULL,
            ObjectName: NULL as _,
            Attributes: 0,
            SecurityDescriptor: NULL,
            SecurityQualityOfService: NULL
        };

        let cid : CLIENT_ID = CLIENT_ID {
            UniqueProcess: pid as _,
            UniqueThread: 0 as _
        };

        unsafe {
            status = syscall!("NtOpenProcess", &mut handle, PROCESS_VM_WRITE | PROCESS_VM_READ, &oa, &cid);
        }
        
        println!("\n\t[-] NtOpenProcess status: {:#02X}", status);

        if status != 0 {
            return;
        }

        unsafe {
            status = syscall!("NtQueryVirtualMemory", currentProcess, &pid, 0, &mem_info, mem_info_len, NULL as PVOID);
        }
        
        println!("\n\t[-] NtQueryVirtualMemory status: {:#02X}", status);
        
        if status != 0 {
            return;
        }

        println!("\n\t[-] Protect value: {:#02X}\n\t", mem_info.Protect);

        unsafe {
            status = syscall!("NtClose", handle);
        }
        
        println!("\t[-] NtClose       status: {:#02X}", status);
    }

تنفيذ طرق مخصصة لحل أرقام SSN وعناوين الاستدعاءات في وقت التشغيل:

جميع الأكواد المطلوبة لجلب SSN والعنوان موجودة في الملف src\syscall_resolve.rs.

هناك دالة أساسية واحدة تُستخدم لاسترجاع القيم تسمى get_ssn، مع 4 تطبيقات، حيث تكون الوسيطة المستقبلة هي نتيجة استدعاء crate::obf!(\<your function name\>)، وقيم الإرجاع هي ssn (u16)، وفي حالة الاستدعاء غير المباشر، عنوان تعليمة syscall/sysenter التي تريد استخدامها.

  • x86_64 مباشر:

    fn get_ssn(hash: u32) -> (u16);

  • x86_64 غير مباشر:

    fn get_ssn(hash: u32) -> (u16, u64);

  • x86 مباشر:

    fn get_ssn(hash: u32) -> (u16);

  • x86 غير مباشر:

    fn get_ssn(hash: u32) -> (u16, u32);

فقط أعد تنفيذ هذه الدوال بطريقة الجلب التي تريدها.


شكر خاص إلى SysWhispers3 لكونه ركيزة قوية في تطوير هذه المكتبة

تنزيل الأداة