Documentation
¶
Index ¶
Constants ¶
View Source
const Header64Size = 64
Header64Size is equal to the size of the ELF header in bytes.
View Source
const ProgramHeader64Size = 56
ProgramHeader64Size is equal to the size of a program header in bytes.
View Source
const SectionHeader64Size = 64
SectionHeader64Size is equal to the size of a section header in bytes.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ELF64 ¶
ELF64 represents an ELF 64-bit file.
func (*ELF64) AddProgram ¶
func (elf *ELF64) AddProgram(data []byte, typ ProgramType, flags ProgramFlags)
AddProgram adds a section to the ELF file.
func (*ELF64) AddSection ¶
func (elf *ELF64) AddSection(data []byte, typ SectionType, flags SectionFlags)
AddSection adds a section to the ELF file.
func (*ELF64) WriteToFile ¶
WriteToFile writes the ELF binary to a file.
type Header64 ¶
type Header64 struct {
Magic [4]byte
Class byte
Endianness byte
Version byte
OSABI byte
ABIVersion byte
Type int16
Architecture int16
FileVersion int32
EntryPointInMemory int64
ProgramHeaderOffset int64
SectionHeaderOffset int64
Flags int32
Size int16
ProgramHeaderEntrySize int16
ProgramHeaderEntryCount int16
SectionHeaderEntrySize int16
SectionHeaderEntryCount int16
SectionNameStringTableIndex int16
// contains filtered or unexported fields
}
Header contains general information.
type Program ¶
type Program struct {
Header ProgramHeader64
Padding []byte
Data []byte
}
Program includes the machine-code instructions.
type ProgramFlags ¶
type ProgramFlags int32
const ( ProgramFlagsExecutable ProgramFlags = 0x1 ProgramFlagsWritable ProgramFlags = 0x2 ProgramFlagsReadable ProgramFlags = 0x4 )
type ProgramHeader64 ¶
type ProgramHeader64 struct {
Type ProgramType
Flags ProgramFlags
Offset int64
VirtualAddress int64
PhysicalAddress int64
SizeInFileImage int64
SizeInMemory int64
Align int64
}
ProgramHeader points to the executable part of our program.
type ProgramType ¶
type ProgramType int32
const ( ProgramTypeNULL ProgramType = 0 ProgramTypeLOAD ProgramType = 1 ProgramTypeDYNAMIC ProgramType = 2 ProgramTypeINTERP ProgramType = 3 ProgramTypeNOTE ProgramType = 4 ProgramTypeSHLIB ProgramType = 5 ProgramTypePHDR ProgramType = 6 ProgramTypeTLS ProgramType = 7 // Thread local storage segment )
type Section ¶
type Section struct {
Header SectionHeader64
Padding []byte
Data []byte
}
Section includes the text data and initialized variables.
type SectionFlags ¶
type SectionFlags int64
const ( SectionFlagsWritable SectionFlags = 0x1 SectionFlagsAllocate SectionFlags = 0x2 SectionFlagsExecutable SectionFlags = 0x4 )
type SectionHeader64 ¶
type SectionHeader64 struct {
NameOffset int32
Type SectionType
Flags SectionFlags
VirtualAddress int64
Offset int64
SizeInFileImage int64
Link int32
Info int32
Align int64
EntrySize int64
}
SectionHeader points to the data sections of our program.
type SectionType ¶
type SectionType int32
const ( SectionTypeNULL SectionType = 0 SectionTypePROGBITS SectionType = 1 SectionTypeSYMTAB SectionType = 2 SectionTypeSTRTAB SectionType = 3 SectionTypeRELA SectionType = 4 SectionTypeHASH SectionType = 5 SectionTypeDYNAMIC SectionType = 6 SectionTypeNOTE SectionType = 7 SectionTypeNOBITS SectionType = 8 SectionTypeREL SectionType = 9 SectionTypeSHLIB SectionType = 10 SectionTypeDYNSYM SectionType = 11 SectionTypeNUM SectionType = 12 )
Click to show internal directories.
Click to hide internal directories.