Access the Windows API by module enumeration.
Resolve base address sebuah module (misal kernel32.dll) dengan memindai address space proses menggunakan VirtualQuery. Alamat fungsi dapat diperoleh melalui manual export walk by name. Pendekatan ini tidak menelusuri PEB.Ldr, tidak memanggil GetModuleHandle, GetProcAddress, atau LoadLibrary.
Teknik ini memfokuskan pada langkah resolusi modul:
- iterasi setiap region memori dengan
VirtualQuery - filter region bertipe
MEM_IMAGEdan statusMEM_COMMIT - validasi header PE pada
AllocationBase - mencocokkan
IMAGE_EXPORT_DIRECTORY.Namedengan nama DLL target.
VirtualQuery dipanggil langsung (linker import) dalam sample ini. Pada shellcode nyata, VirtualQuery harus di-resolve secara terpisah (misalnya melalui PEB bootstrap, parse IAT, atau syscall NtQueryVirtualMemory).
- Mulai dari alamat
NULL; panggilVirtualQueryuntuk mendapatkanMEMORY_BASIC_INFORMATIONsetiap region. - Filter region dengan
State == MEM_COMMITdanType == MEM_IMAGE(halaman yang merupakan image PE yang dimuat). - Gunakan
AllocationBasesebagai kandidat base address modul; validasi signatureMZdanPE. - Baca nama modul dari field
Namepada export directory (IMAGE_EXPORT_DIRECTORY). - Bandingkan nama tersebut dengan DLL target (misal
kernel32.dll) secara case-insensitive. - Jika cocok, kembalikan
AllocationBasesebagaiDllBase. - Parse export table dari
DllBasedan cocokkan nama fungsi (lihatmanual-name).
- Tetap berfungsi ketika linked list modul di PEB di-unlink atau dimanipulasi.
- Tidak membaca
PEB.Ldratau menelusuriLDR_DATA_TABLE_ENTRY. - Menghindari hook EDR pada
GetModuleHandledan API loader Win32 lainnya.
- Pemindaian seluruh address space lebih lambat dibanding penelusuran linked list PEB.
VirtualQuerydipanggil langsung dalam sample ini; shellcode nyata memerlukan bootstrap terpisah untuk mendapatkan pointer fungsi.- Identitas modul bergantung pada
IMAGE_EXPORT_DIRECTORY.Name, yang dapat berbeda dariBaseDllNamepada kasus tertentu. VirtualQuerysendiri dapat dimonitor atau di-hook oleh produk keamanan.- Hanya menangani modul yang sudah dimuat; tidak memuat DLL baru.
- VirtualQuery
- MEMORY_BASIC_INFORMATION
- IMAGE_EXPORT_DIRECTORY
- manual-name: manual PE export walk by name
- InLoadOrder: variasi penelusuran modul melalui PEB
InLoadOrderModuleList