
# مكتبة استدعاءات نظام غير مباشرة لنظام ويندوز x64 (رأس فقط) بدون CRT، بدون IAT، حماية VEH ضد نقاط التوقف، تجاوز AMSI/ETW، ذاكرة W^X، استدعاءات ديناميكية لكل استدعاء.
مكتبة برأس واحد فقط (Header-only) لنظام Windows x64 تتيح لك استدعاء أي استدعاء نظام (NT syscall) دون لمس استيرادات ntdll، ودون ترك نصوص برمجية في ملفك الثنائي، ودون العلامات الحمراء المعتادة التي تجعل أنظمة EDR تفقد صوابها.
لا CRT. لا STL. لا IAT. يُترجم المشروع بأكمله إلى حوالي 19KB مع صفر تبعيات DLL حرفيًا.
صُممت لتجنب المزالق الشائعة في مكتبات استدعاءات النظام الموجودة — نصوص عادية، ثوابت تجزئة معروفة، استدعاء نظام مباشر من ذاكرة غير تابعة لـ ntdll، استيرادات IAT التي تصرخ "أنا أفعل شيئًا غريبًا"، مؤشر SEC_NO_CHANGE، تضخم CRT. لا شيء من ذلك هنا.
محرك استدعاءات النظام
syscall; ret الخاصة بـ ntdll نفسها، لذا يكون RIP دائمًا داخل ntdll عند تنفيذ تعليمة syscall\KnownDlls\ntdll.dll (بدون وصول لنظام الملفات، غير مرئي لـ ProcMon)مكافحة نقاط التوقف
التهرب
AmsiScanBuffer لإرجاع S_OKEtwEventWrite لإرجاع SUCCESSجودة الكود
stealth/ في مشروعك وانطلق
initialize() ملف ntdll عبر قسم \KnownDlls، وتحلل تصديرات PE، وتلتقط كل رقم استدعاء نظام.text في ntdll بحثًا عن أداة syscall; ret — من هنا سيتم تنفيذ تعليمة syscall الفعليةsc::invoke():
emit_stub() stub متعدد الأشكال فريدًا — تعليمات عشوائية قبل/بعد، رقم استدعاء نظام مشفر بـ 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 — عمليات الذاكرة، قفل الدوران، static_map، PRNG، مخرجات التصحيح
hash.hpp — تجزئة مخصصة في وقت الترجمة
xorstr.hpp — تشفير نصوص XOR في وقت الترجمة
peb.hpp — مسح PEB، محلل تصديرات PE، كشف الخطافات
syscall.hpp — محرك استدعاءات النظام غير المباشر، مولّد الـ stub، W^X، مكافحة التفريغ
trampoline.hpp — مكافحة نقاط التوقف القائمة على VEH
bypass.hpp — ترقيع AMSI + ETW
MIT — افعل ما تشاء به.