
ヘッダーのみのWindows x64間接システムコールライブラリ。CRTゼロ、IATゼロ、VEHアンチBP、AMSI/ETWバイパス、W^Xメモリ、コールごとの動的スタブ。
Windows x64用のヘッダーオンリーライブラリです。ntdllインポートに触れず、バイナリに文字列を残さず、EDRを混乱させる通常の危険信号なしに、任意のNTシステムコールを呼び出すことができます。
CRTなし、STLなし、IATなし。全体が約19KBにコンパイルされ、DLL依存性は完全にゼロです。
既存のシステムコールライブラリの一般的な落とし穴(平文文字列、既知のハッシュ定数、非ntdllメモリからの直接システムコール、「何か変なことをしている」と叫ぶIATインポート、SEC_NO_CHANGE IOC、CRTの肥大化)を回避するために構築されています。ここにはそのようなものは一切ありません。
システムコールエンジン
syscall; ret ガジェットにジャンプするため、syscall命令が発火するときRIPは常にntdll内にあります。\KnownDlls\ntdll.dll セクションマッピングから抽出されます(ファイルシステムアクセスなし、ProcMonから不可視)。アンチブレークポイント
回避
AmsiScanBuffer をパッチしてS_OKを返すようにします。EtwEventWrite をパッチしてSUCCESSを返すようにします。コード品質
stealth/ フォルダをプロジェクトにドロップするだけですぐに使用できます。
initialize() は \KnownDlls セクションを通じてntdllを開き、PEエクスポートを解析し、すべてのシステムコール番号を取得します。.text から syscall; ret ガジェットをスキャンします — ここが実際のsyscall命令が実行される場所です。sc::invoke() を呼び出すと:
emit_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にBPを設定していても動作します
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 — 間接システムコールエンジン、スタブジェネレータ、W^X、アンチダンプ
trampoline.hpp — VEHベースのアンチブレークポイント
bypass.hpp — AMSI + ETWパッチング
MIT — ご自由にお使いください。