Access the Windows API via direct syscall with neighbor-based SSN inference (Halo's Gate).
Halo's Gate memperluas Hell's Gate untuk menangani kasus di mana stub target telah di-hook. Strategi Halo's Gate sederhana, SSN dihitung dari stub fungsi NT yang bertetangga dan masih bersih.
Prinsipnya: SSN ditetapkan secara sekuensial sesuai urutan alamat stub Nt* di ntdll. Jika fungsi pada posisi i di-hook, dan fungsi pada posisi i+k memiliki SSN N, maka SSN target adalah N - k.
sorted Nt* stubs by address:
[i-2] NtAdjustPrivileges SSN = X-2 (clean)
[i-1] NtAlertResumeThread SSN = X-1 (clean)
[i] NtAllocateVirtualMemory SSN = X (HOOKED)
[i+1] NtAlpcAcceptConnectPort SSN = X+1 (clean) → infer X = (X+1) - 1
Trampoline statis (x64 only, Windows 10+):
HalosGate(ssn)— menyimpan SSN ke variabel globalwSystemCall(.data)HaloDescent(...)— stub di.textyang mengeksekusi syscall:
mov r10, rcx
mov eax, wSystemCall
syscall
ret
ml64.exe /nologo /c halosgate.asm
cl.exe /nologo /Ox /MT /W0 /GS- /DNDEBUG /Tpcode.cpp halosgate.objMemerlukan x64 Developer Command Prompt.
- Sample ini x64 only (layout stub ntdll Win10+, pola
4C 8B D1 B8). - Syscall dieksekusi lewat
HalosGate/HaloDescentdi image modul (bukan alokasi heap RWX per-SSN).