Eksekusi shellcode sebagai thread terpisah dengan shared memory address (berbagi ruang memory antar thread dalam satu process). Terdapat beberapa fungsi Threading di Windows (public/internal) yang dapat dimanfaatkan untuk menjalankan thread.
Secara garis besar, shellcode yang telah diekstrak akan disalin ke ruang memory yang telah dialokasikan. Alamat shellcode kemudian menjadi fungsi entrypoint bagi thread.
Variasi dikelompokkan berdasarkan asal API: Win32 publik, native/undocumented, thread pool, Shell API, dan callback loader.
API Win32 publik
- CreateThread: buat thread baru; shellcode sebagai
LPTHREAD_START_ROUTINE. - CreateRemoteThread: varian remote thread; dapat dipakai pada proses sendiri via
GetCurrentProcess(). - CreateRemoteThreadEx: varian extended dengan atribut thread dan pengembalian thread ID.
Native / undocumented
- NtCreateThreadEx: pembuatan thread via syscall native
NtCreateThreadEx. - RtlCreateUserThread: pembuatan thread user-mode melalui ntdll.
- EtwpCreateEtwThread: pembuatan thread internal ETW di ntdll (undocumented).
Thread pool
- CreateThreadpoolWork: submit shellcode sebagai work item thread pool.
- TrySubmitThreadpoolCallback: kirim callback sederhana ke thread pool tanpa objek work persisten.
- TpSimpleTryPost: varian internal ntdll untuk posting callback ke thread pool (undocumented).
Shell API
- SHCreateThread: pembuatan thread via Shell helper
SHCreateThread. - SHCreateThreadWithHandle: varian yang mengembalikan handle thread.
Callback loader
- tls-callback: eksekusi shellcode sebagai TLS callback sebelum entry point utama dijalankan.