binary

package
v0.16.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2024 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// GOOS labels
	LINUX  = "linux"
	DARWIN = "darwin"
	WIN    = "windows"
)
View Source
const (
	MachO32Magic   uint32 = 0xfeedface // 32 bit, big endian
	MachO64Magic   uint32 = 0xfeedfacf // 64 bit, big endian
	MachO32LIMagic uint32 = 0xcefaedfe // 32 bit, little endian
	MachO64LIMagic uint32 = 0xcffaedfe // 64 bit, little endian
	MachOFat       uint32 = 0xcafebabe // Universal Binary
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Binary

type Binary struct {
	// contains filtered or unexported fields
}

Binary is the base type of the package. It abstracts a binary executable

func New

func New(filePath string) (bin *Binary, err error)

New creates a new binary instance.

func NewWithOptions

func NewWithOptions(filePath string, opts *Options) (bin *Binary, err error)

NewWithOptions creates a new binary with the specified options

func (*Binary) Arch

func (b *Binary) Arch() string

Arch returns a string with the GOARCH label of the file

func (*Binary) ContainsStrings added in v0.10.0

func (b *Binary) ContainsStrings(s ...string) (match bool, err error)

ContainsStrings searches the printable strings un a binary file

func (*Binary) LinkMode added in v0.15.0

func (b *Binary) LinkMode() (LinkMode, error)

LinkMode returns the linking mode of the binary.

func (*Binary) OS

func (b *Binary) OS() string

OS returns a string with the GOOS label of the binary file

func (*Binary) SetImplementation

func (b *Binary) SetImplementation(impl binaryImplementation)

SetImplementation sets the implementation to handle this sort of executable

type ELFBinary

type ELFBinary struct {
	Header  *ELFHeader
	Options *Options
}

ELFBinary abstracts a binary in ELF format

func NewELFBinary

func NewELFBinary(filePath string, opts *Options) (*ELFBinary, error)

NewELFBinary opens a file and returns an ELF binary if it is one

func (*ELFBinary) Arch

func (elf *ELFBinary) Arch() string

Arch return the GOOS label of the binary

func (*ELFBinary) LinkMode added in v0.15.0

func (elf *ELFBinary) LinkMode() (LinkMode, error)

LinkMode returns the linking mode of the binary.

func (*ELFBinary) OS

func (elf *ELFBinary) OS() string

OS returns the GOOS label for the operating system

type ELFHeader

type ELFHeader struct {
	WordFlag uint8 // Flag: 32 or 64 bit binary

	OSABI      uint8 // Binary Interface
	ABIVersion uint8 // ABI Version

	EType    uint16 // Executable Type: Executable, relocatable, etc
	EMachine uint16 // Machine architecture
	// contains filtered or unexported fields
}

ELFHeader abstracts the data we need from the elf header

func GetELFHeader

func GetELFHeader(path string) (*ELFHeader, error)

GetELFHeader returns the header if the binary is and EF binary

func (*ELFHeader) MachineType

func (eh *ELFHeader) MachineType() string

MachineType returns a string with the architecture moniker

func (*ELFHeader) String

func (eh *ELFHeader) String() string

String returns the relevant info of the header as a string

func (*ELFHeader) WordLength

func (eh *ELFHeader) WordLength() int

WordLength returns either 32 or 64 for 32bit or 64 bit architectures

type Header interface {
	MachineType() string
	String() string
	WordLength() int
}

Header is a struct that captures the header of a binary executable

type LinkMode added in v0.15.0

type LinkMode string

LinkMode is the enum for all available linking modes.

const (
	LinkModeUnknown LinkMode = "unknown"
	LinkModeStatic  LinkMode = "static"
	LinkModeDynamic LinkMode = "dynamic"
)

type MachOBinary

type MachOBinary struct {
	Header  *MachOHeader
	Options *Options
}

MachOBinary is an abstraction for a Mach-O executable

func NewMachOBinary

func NewMachOBinary(filePath string, opts *Options) (*MachOBinary, error)

NewMachOBinary returns a Mach-O binary if the specified file is one

func (*MachOBinary) Arch

func (macho *MachOBinary) Arch() string

Arch returns a string with the GOARCH label of the file

func (*MachOBinary) LinkMode added in v0.15.0

func (macho *MachOBinary) LinkMode() (LinkMode, error)

LinkMode returns the linking mode of the binary.

func (*MachOBinary) OS

func (macho *MachOBinary) OS() string

OS returns a string with the GOOS label of the binary file

type MachOHeader

type MachOHeader struct {
	Magic  uint32
	CPU    uint32
	SubCPU uint32
}

MachOHeader is a structure to capture the data we need from the binary header

func GetMachOHeader

func GetMachOHeader(path string) (*MachOHeader, error)

GetMachOHeader returns a struct with the executable header information

func (*MachOHeader) MachineType

func (machoh *MachOHeader) MachineType() string

MachineType returns the architecture as a GOARCH label

func (*MachOHeader) String

func (machoh *MachOHeader) String() string

String returns the header information as a string

func (*MachOHeader) WordLength

func (machoh *MachOHeader) WordLength() int

WordLength returns an integer indicating if this is a 32 or 64bit binary

type Options

type Options struct {
	Path string
}

Options to control the binary checker

type PEBinary

type PEBinary struct {
	Header  *PEHeader
	Options *Options
}

PEBinary is a struct that abstracts a Windows Portable Executable

func NewPEBinary

func NewPEBinary(filePath string, opts *Options) (bin *PEBinary, err error)

NewPEBinary Returns a binary implementation for a Windows executable

func (*PEBinary) Arch

func (pe *PEBinary) Arch() string

Arch return the architecture

func (*PEBinary) LinkMode added in v0.15.0

func (pe *PEBinary) LinkMode() (LinkMode, error)

LinkMode returns the linking mode of the binary.

func (*PEBinary) OS

func (pe *PEBinary) OS() string

OS returns the operating system of the binary

type PEFileHeader

type PEFileHeader struct {
	Machine              uint16
	NumberOfSections     uint16
	TimeDateStamp        uint32
	PointerToSymbolTable uint32
	NumberOfSymbols      uint32
	SizeOfOptionalHeader uint16
	Characteristics      uint16
}

PEFileHeader captures the header information of the executable

type PEHeader

type PEHeader struct {
	Machine uint16
	Magic   uint16
}

PEHeader captures the header information of the executable

func GetPEHeader

func GetPEHeader(path string) (*PEHeader, error)

GetPEHeader returns a portable executable header from the specified file

func (*PEHeader) MachineType

func (peh *PEHeader) MachineType() string

MachineType returns the moniker of the binary architecture

func (*PEHeader) String

func (peh *PEHeader) String() string

Return the header information as a string

func (*PEHeader) WordLength

func (peh *PEHeader) WordLength() int

WordLength Returns an integer indicating if it's a 64 or 32 bit binary

type PEOptionalHeader

type PEOptionalHeader struct {
	Magic uint16
}

PEOptionalHeader we only care about the magic number to determine the binary wordsize

Directories

Path Synopsis
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL