package pe
Import Path
debug/pe (on go.dev)
Dependency Relation
imports 12 packages, and imported by one package
Involved Source Files
Package pe implements access to PE (Microsoft Windows Portable Executable) files.
# Security
This package is not designed to be hardened against adversarial inputs, and is
outside the scope of https://go.dev/security/policy. In particular, only basic
validation is done when parsing object files. As such, care should be taken when
parsing untrusted inputs, as parsing malformed files may consume significant
resources, or cause panics.
pe.go
section.go
string.go
symbol.go
Package-Level Type Names (total 15)
COFFSymbol represents single COFF symbol table record.
Name [8]uint8
NumberOfAuxSymbols uint8
SectionNumber int16
StorageClass uint8
Type uint16
Value uint32
FullName finds real name of symbol sym. Normally name is stored
in sym.Name, but if it is longer then 8 characters, it is stored
in COFF string table st instead.
COFFSymbolAuxFormat5 describes the expected form of an aux symbol
attached to a section definition symbol. The PE format defines a
number of different aux symbol formats: format 1 for function
definitions, format 2 for .be and .ef symbols, and so on. Format 5
holds extra info associated with a section definition, including
number of relocations + line numbers, as well as COMDAT info. See
https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#auxiliary-format-5-section-definitions
for more on what's going on here.
Checksum uint32
NumLineNumbers uint16
NumRelocs uint16
SecNum uint16
Selection uint8
Size uint32
func (*File).COFFSymbolReadSectionDefAux(idx int) (*COFFSymbolAuxFormat5, error)
A File represents an open PE file.
// all COFF symbols (including auxiliary symbol records)
FileHeader FileHeader
FileHeader.Characteristics uint16
FileHeader.Machine uint16
FileHeader.NumberOfSections uint16
FileHeader.NumberOfSymbols uint32
FileHeader.PointerToSymbolTable uint32
FileHeader.SizeOfOptionalHeader uint16
FileHeader.TimeDateStamp uint32
// of type *OptionalHeader32 or *OptionalHeader64
Sections []*Section
StringTable StringTable
// COFF symbols with auxiliary symbol records removed
COFFSymbolReadSectionDefAux returns a blob of auxiliary information
(including COMDAT info) for a section definition symbol. Here 'idx'
is the index of a section symbol in the main [COFFSymbol] array for
the File. Return value is a pointer to the appropriate aux symbol
struct. For more info, see:
auxiliary symbols: https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#auxiliary-symbol-records
COMDAT sections: https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#comdat-sections-object-only
auxiliary info for section definitions: https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#auxiliary-format-5-section-definitions
Close closes the [File].
If the [File] was created using [NewFile] directly instead of [Open],
Close has no effect.
(*File) DWARF() (*dwarf.Data, error)
ImportedLibraries returns the names of all libraries
referred to by the binary f that are expected to be
linked with the binary at dynamic link time.
ImportedSymbols returns the names of all symbols
referred to by the binary f that are expected to be
satisfied by other libraries at dynamic load time.
It does not return weak symbols.
Section returns the first section with the given name, or nil if no such
section exists.
*File : io.Closer
func NewFile(r io.ReaderAt) (*File, error)
func Open(name string) (*File, error)
Characteristics uint16
Machine uint16
NumberOfSections uint16
NumberOfSymbols uint32
PointerToSymbolTable uint32
SizeOfOptionalHeader uint16
TimeDateStamp uint32
FormatError is unused.
The type is retained for compatibility.
(*FormatError) Error() string
*FormatError : error
AddressOfEntryPoint uint32
BaseOfCode uint32
BaseOfData uint32
CheckSum uint32
DataDirectory [16]DataDirectory
DllCharacteristics uint16
FileAlignment uint32
ImageBase uint32
LoaderFlags uint32
Magic uint16
MajorImageVersion uint16
MajorLinkerVersion uint8
MajorOperatingSystemVersion uint16
MajorSubsystemVersion uint16
MinorImageVersion uint16
MinorLinkerVersion uint8
MinorOperatingSystemVersion uint16
MinorSubsystemVersion uint16
NumberOfRvaAndSizes uint32
SectionAlignment uint32
SizeOfCode uint32
SizeOfHeaders uint32
SizeOfHeapCommit uint32
SizeOfHeapReserve uint32
SizeOfImage uint32
SizeOfInitializedData uint32
SizeOfStackCommit uint32
SizeOfStackReserve uint32
SizeOfUninitializedData uint32
Subsystem uint16
Win32VersionValue uint32
AddressOfEntryPoint uint32
BaseOfCode uint32
CheckSum uint32
DataDirectory [16]DataDirectory
DllCharacteristics uint16
FileAlignment uint32
ImageBase uint64
LoaderFlags uint32
Magic uint16
MajorImageVersion uint16
MajorLinkerVersion uint8
MajorOperatingSystemVersion uint16
MajorSubsystemVersion uint16
MinorImageVersion uint16
MinorLinkerVersion uint8
MinorOperatingSystemVersion uint16
MinorSubsystemVersion uint16
NumberOfRvaAndSizes uint32
SectionAlignment uint32
SizeOfCode uint32
SizeOfHeaders uint32
SizeOfHeapCommit uint64
SizeOfHeapReserve uint64
SizeOfImage uint32
SizeOfInitializedData uint32
SizeOfStackCommit uint64
SizeOfStackReserve uint64
SizeOfUninitializedData uint32
Subsystem uint16
Win32VersionValue uint32
Reloc represents a PE COFF relocation.
Each section contains its own relocation list.
SymbolTableIndex uint32
Type uint16
VirtualAddress uint32
Section provides access to PE COFF section.
Embed ReaderAt for ReadAt method.
Do not embed SectionReader directly
to avoid having Read and Seek.
If a client wants Read and Seek it must use
Open() to avoid fighting over the seek offset
with other clients.
Relocs []Reloc
SectionHeader SectionHeader
SectionHeader.Characteristics uint32
SectionHeader.Name string
SectionHeader.NumberOfLineNumbers uint16
SectionHeader.NumberOfRelocations uint16
SectionHeader.Offset uint32
SectionHeader.PointerToLineNumbers uint32
SectionHeader.PointerToRelocations uint32
SectionHeader.Size uint32
SectionHeader.VirtualAddress uint32
SectionHeader.VirtualSize uint32
Data reads and returns the contents of the PE section s.
If s.Offset is 0, the section has no contents,
and Data will always return a non-nil error.
Open returns a new ReadSeeker reading the PE section s.
If s.Offset is 0, the section has no contents, and all calls
to the returned reader will return a non-nil error.
( Section) ReadAt(p []byte, off int64) (n int, err error)
Section : io.ReaderAt
func (*File).Section(name string) *Section
SectionHeader is similar to [SectionHeader32] with Name
field replaced by Go string.
Characteristics uint32
Name string
NumberOfLineNumbers uint16
NumberOfRelocations uint16
Offset uint32
PointerToLineNumbers uint32
PointerToRelocations uint32
Size uint32
VirtualAddress uint32
VirtualSize uint32
SectionHeader32 represents real PE COFF section header.
Characteristics uint32
Name [8]uint8
NumberOfLineNumbers uint16
NumberOfRelocations uint16
PointerToLineNumbers uint32
PointerToRawData uint32
PointerToRelocations uint32
SizeOfRawData uint32
VirtualAddress uint32
VirtualSize uint32
StringTable is a COFF string table.
String extracts string from COFF string table st at offset start.
func (*COFFSymbol).FullName(st StringTable) (string, error)
Symbol is similar to [COFFSymbol] with Name field replaced
by Go string. Symbol also does not have NumberOfAuxSymbols.
Name string
SectionNumber int16
StorageClass uint8
Type uint16
Value uint32
Package-Level Functions (total 2)
NewFile creates a new [File] for accessing a PE binary in an underlying reader.
Open opens the named file using [os.Open] and prepares it for use as a PE binary.
Package-Level Constants (total 97)
const COFFSymbolSize = 18
These constants make up the possible values for the 'Selection'
field in an AuxFormat5.
These constants make up the possible values for the 'Selection'
field in an AuxFormat5.
These constants make up the possible values for the 'Selection'
field in an AuxFormat5.
These constants make up the possible values for the 'Selection'
field in an AuxFormat5.
These constants make up the possible values for the 'Selection'
field in an AuxFormat5.
These constants make up the possible values for the 'Selection'
field in an AuxFormat5.
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
IMAGE_DIRECTORY_ENTRY constants
OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics
values. These can be combined together.
OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics
values. These can be combined together.
OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics
values. These can be combined together.
OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics
values. These can be combined together.
OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics
values. These can be combined together.
OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics
values. These can be combined together.
OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics
values. These can be combined together.
OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics
values. These can be combined together.
OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics
values. These can be combined together.
OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics
values. These can be combined together.
OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics
values. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
const IMAGE_FILE_MACHINE_AM33 = 467 const IMAGE_FILE_MACHINE_AMD64 = 34404 const IMAGE_FILE_MACHINE_ARM = 448 const IMAGE_FILE_MACHINE_ARM64 = 43620 const IMAGE_FILE_MACHINE_ARMNT = 452 const IMAGE_FILE_MACHINE_EBC = 3772 const IMAGE_FILE_MACHINE_I386 = 332 const IMAGE_FILE_MACHINE_IA64 = 512 const IMAGE_FILE_MACHINE_LOONGARCH32 = 25138 const IMAGE_FILE_MACHINE_LOONGARCH64 = 25188 const IMAGE_FILE_MACHINE_M32R = 36929 const IMAGE_FILE_MACHINE_MIPS16 = 614 const IMAGE_FILE_MACHINE_MIPSFPU = 870 const IMAGE_FILE_MACHINE_MIPSFPU16 = 1126 const IMAGE_FILE_MACHINE_POWERPC = 496 const IMAGE_FILE_MACHINE_POWERPCFP = 497 const IMAGE_FILE_MACHINE_R4000 = 358 const IMAGE_FILE_MACHINE_RISCV128 = 20776 const IMAGE_FILE_MACHINE_RISCV32 = 20530 const IMAGE_FILE_MACHINE_RISCV64 = 20580 const IMAGE_FILE_MACHINE_SH3 = 418 const IMAGE_FILE_MACHINE_SH3DSP = 419 const IMAGE_FILE_MACHINE_SH4 = 422 const IMAGE_FILE_MACHINE_SH5 = 424 const IMAGE_FILE_MACHINE_THUMB = 450 const IMAGE_FILE_MACHINE_UNKNOWN = 0 const IMAGE_FILE_MACHINE_WCEMIPSV2 = 361
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
Section characteristics flags.
Section characteristics flags.
Section characteristics flags.
Section characteristics flags.
Section characteristics flags.
Section characteristics flags.
Section characteristics flags.
Section characteristics flags.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
The pages are generated with Golds v0.7.0-preview. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |