
مكتبة استدعاءات نظام غير مباشرة لـ Windows x64 برأس ملف واحد فقط. بدون CRT، بدون IAT، VEH مضاد لنقاط التوقف، تجاوز AMSI/ETW، ذاكرة W^X، كعب ديناميكي لكل استدعاء.
مكتبة برأس واحد (Header-only) لـ Windows x64 تتيح لك استدعاء أي استدعاء نظام NT دون لمس استيرادات ntdll، ودون ترك سلاسل نصية في ملفك الثنائي، ودون العلامات الحمراء المعتادة التي تدفع أنظمة EDR إلى فقدان صوابها.
لا CRT. لا STL. لا IAT. يترجم الكل إلى حوالي 19KB مع عدم وجود تبعيات DLL على الإطلاق.
صُممت لتجنب المزالق الشائعة في مكتبات استدعاء النظام الحالية — النصوص العادية، ثوابت التجزئة المعروفة، الاستدعاء المباشر للنظام من ذاكرة غير ntdll، استيرادات IAT التي تصرخ "أنا أفعل شيئًا غريبًا"، IOC SEC_NO_CHANGE، تضخم CRT. لا شيء من هذا هنا.
محرك استدعاء النظام
syscall; ret الخاصة بـ ntdll، بحيث يكون RIP دائمًا داخل ntdll عند تشغيل تعليمة syscall\KnownDlls\ntdll.dll (لا وصول إلى نظام الملفات، غير مرئي لـ ProcMon)مكافحة نقاط التوقف (Anti-Breakpoint)
التهرب (Evasion)
AmsiScanBuffer لإرجاع S_OKEtwEventWrite لإرجاع SUCCESSجودة الكود
stealth/ في مشروعك وانطلق
initialize() تفتح ntdll عبر قسم \KnownDlls، وتحلل تصديرات PE، وتجلب كل رقم استدعاء نظام.text في ntdll للعثور على أداة syscall; ret — هذه هي النقطة التي ستنطلق منها تعليمة syscall الفعليةsc::invoke():
emit_stub() تبني كتلة برمجية متعددة الأشكال فريدة — تعليمات عشوائية قبل/بعد، رقم syscall مشفر بـ XOR بمفتاح خاص بكل استدعاء، قفزة غير مباشرة إلى أداة ntdllفي أي لحظة لا توجد ذاكرة RWX. في أي لحظة لا يتم تنفيذ تعليمة syscall خارج ntdll. في أي لحظة لا تُخزن أرقام استدعاءات النظام بنص عادي.
تستدعي tramp::invoke() مع الوظيفة المستهدفة. إذا لم تكن هناك نقطة توقف — تعمل الوظيفة بشكل طبيعي بدون أي حمل زائد. إذا وضع مصحح الأخطاء 0xCC:
قائمة نقاط التوقف في المصحح لا تزال تظهرها كأنها نشطة. نقطة التوقف لا تُطلق أبدًا على استدعاءاتنا.
cmake -B build -A x64
cmake --build build --config Release
يتطلب MSVC (VS 2019+) و CMake 3.15+. الناتج ~19KB ولا استيرادات.
#include "stealth/syscall.hpp"
stealth::sc::initialize();
PVOID base = nullptr;
SIZE_T size = 0x1000;
NTSTATUS status = stealth::sc::invoke<NTSTATUS>(
HASH("NtAllocateVirtualMemory"),
NtCurrentProcess(), &base, (ULONG_PTR)0, &size,
(ULONG)(MEM_COMMIT | MEM_RESERVE), (ULONG)PAGE_READWRITE
);
#include "stealth/trampoline.hpp"
// تعمل حتى لو كان لدى x64dbg نقطة توقف على MessageBoxA
int ret = stealth::tramp::invoke<int>(
HASH_CI("user32.dll"), HASH("MessageBoxA"),
(HWND)nullptr, (LPCSTR)"hello", (LPCSTR)"title", (UINT)MB_OK
);
#include "stealth/bypass.hpp"
stealth::bypass::patch_etw();
stealth::bypass::patch_amsi();
stealth::tramp::shutdown();
stealth::sc::shutdown();
stealth/
common.hpp — عمليات الذاكرة، spinlock، static_map، PRNG، إخراج التصحيح
hash.hpp — تجزئة مخصصة في وقت التحويل (compile-time)
xorstr.hpp — تشفير سلاسل نصية بـ XOR في وقت التحويل
peb.hpp — المشي في PEB، محلل تصديرات PE، كشف الخطافات
syscall.hpp — محرك استدعاء نظام غير مباشر، مولد كتل برمجية، W^X، مكافحة التفريغ (anti-dump)
trampoline.hpp — مكافحة نقطة التوقف عبر VEH
bypass.hpp — تصحيح AMSI + ETW
MIT — افعل به ما تشاء.