Das ist strenggenommen falsch, denn TImageSectionHeader.Name ist
nicht notwendigerweise nullterminiert!
Wenn der Name genau 8 Zeichen lang ist, wird ein einfacher PAnsiChar-Cast wie oben möglicherweise zusätzlichen Müll ausgeben.
Da hast du recht!
Deine Funktion berechnet allerdings den Zeiger auf die erste ImageSection nicht korrekt.
SectionHeader := PImageSectionHeader(NativeInt(NtHeaders) + SizeOf(NtHeaders^))
funktioniert nicht immer. Ist zwar ein ziemlich synthetischer Fall, aber das
PE Format sieht vor, dass der OptionalHeader eine variable Länge haben kann. Deshalb muss die korrekte Berechnung über
Delphi-Quellcode:
ImageSectionHeader := PImageSectionHeader(PByte(ImageNtHeaders) + SizeOf(TImageNtHeaders) -
SizeOf(TImageOptionalHeader) + ImageNtHeaders^.FileHeader.SizeOfOptionalHeader)
erfolgen.