Beberapa API yang digunakan dalam proses loading shellcode.
Digunakan untuk mengalokasikan area di memory untuk menampung shellcode.
LPVOID VirtualAlloc (LPVOID address, SIZE_T size, DWORD alloc_type, DWORD protection);
LPVOID VirtualAllocEx (HANDLE proc, LPVOID address, SIZE_T size, DWORD alloc_type, DWORD protection);
HGLOBAL GlobalAlloc (UINT flags, SIZE_T length); Digunakan untuk menyalin data ke lokasi lain.
VOID RtlMoveMemory (VOID * destination, VOID * source, SIZE_T length);Digunakan untuk mengubah permission dari page atau area yang dialokasikan. Umumnya untuk memastikan bahwa memory menjadi executable.
BOOL VirtualProtect (LPVOID address, SIZE_T size, DWORD new_protection, PDWORD old_protection);
BOOL VirtualProtectEx (HANDLE proc, LPVOID address, SIZE_T size, DWORD new_protection, PDWORD old_protection)
Digunakan untuk mengeksekusi shellcode sebagai thread terpisah.
HANDLE CreateThread (LPSECURITY_ATTRIBUTES attrs, SIZE_T stack_size, LPTHREAD_START_ROUTINE start_addr, LPVOID param, DWORD creation_flag, LPDWORD thread_id);
HANDLE CreateRemoteThread (HANDLE proc, LPSECURITY_ATTRIBUTES attrs, SIZE_T stack_size, LPTHREAD_START_ROUTINE start_addr, LPVOID param, DWORD creation_flag, LPDWORD thread_id);
HANDLE CreateRemoteThreadEx (HANDLE proc, LPSECURITY_ATTRIBUTES attrs, SIZE_T stack_size, LPTHREAD_START_ROUTINE start_addr, LPVOID param, DWORD creation_flag, LPPROC_THREAD_ATTRIBUTE_LIST attr_list, LPDWORD thread_id);