Windows loader does not care about section names, so the name does not really matter, but usually this section contains the pointer to the indirect call guard check (___guard_check_icall_fptr
). The pointer to it is stored in the GuardCFCheckFunctionPointer
field of the load configuration directory.
I guess in the newer files it may contain some additional pointers (see below). The zeroes are probably just padding to the default section alignment (512 or 1024 bytes, not sure which).
P.S. found a recent x64 PE with more pointers. Apparently the following is the full layout for a 32-byte section:
__guard_check_icall_fptr dq offset _guard_check_icall_nop
__guard_dispatch_icall_fptr dq offset _guard_dispatch_icall_nop
__guard_ss_verify_failure_fptr dq offset __guard_ss_verify_failure_default
__guard_ss_verify_sp_fptr dq offset __guard_ss_verify_sp_default
First two pointers are part of the Control Flow Guard implementation, the other two are from the now-deprecated Return Flow Guard. All four are referenced by fields in the load configuration directory, i.e. in theory they don't have to be in this order or even placed together.