Documentation
¶
Overview ¶
Package patchlib provides common functions related to patching binaries.
Index ¶
- func BLX(pc, target uint32) []byte
- type Patcher
- func (p *Patcher) BaseAddress(offset int32) error
- func (p *Patcher) ExtractZlib() ([]ZlibItem, error)
- func (p *Patcher) FindBaseAddress(find []byte) error
- func (p *Patcher) FindBaseAddressString(find string) error
- func (p *Patcher) FindBaseAddressSymbol(find string) error
- func (p *Patcher) FindZlib(find string) error
- func (p *Patcher) FindZlibHash(hash string) error
- func (p *Patcher) GetBytes() []byte
- func (p *Patcher) GetCur() int32
- func (p *Patcher) ReplaceBLX(offset int32, find, replace uint32) error
- func (p *Patcher) ReplaceBytes(offset int32, find, replace []byte) error
- func (p *Patcher) ReplaceBytesNOP(offset int32, find []byte) error
- func (p *Patcher) ReplaceFloat(offset int32, find, replace float64) error
- func (p *Patcher) ReplaceInt(offset int32, find, replace uint8) error
- func (p *Patcher) ReplaceString(offset int32, find, replace string) error
- func (p *Patcher) ReplaceZlib(offset int32, find, replace string) error
- func (p *Patcher) ReplaceZlibGroup(offset int32, repl []Replacement) error
- func (p *Patcher) ResetBaseAddress()
- type Replacement
- type ZlibItem
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Patcher ¶
type Patcher struct {
// contains filtered or unexported fields
}
Patcher applies patches to a byte array. All operations are done starting from cur.
func (*Patcher) BaseAddress ¶
BaseAddress moves cur to an offset. The offset starts at 0.
func (*Patcher) ExtractZlib ¶ added in v0.7.0
ExtractZlib extracts all CSS zlib streams. It returns it as a map of offsets and strings.
func (*Patcher) FindBaseAddress ¶
FindBaseAddress moves cur to the offset of a sequence of bytes.
func (*Patcher) FindBaseAddressString ¶
FindBaseAddressString moves cur to the offset of a string.
func (*Patcher) FindBaseAddressSymbol ¶ added in v0.13.0
FindBaseAddressSymbol moves cur to the offset of a symbol by it's demangled c++ name.
func (*Patcher) FindZlib ¶ added in v0.7.0
FindZlib finds the base address of a zlib css stream based on a substring (not sensitive to whitespace).
func (*Patcher) FindZlibHash ¶ added in v0.7.0
FindZlibHash finds the base address of a zlib css stream based on it's SHA1 hash (can be found using the cssextract tool).
func (*Patcher) ReplaceBLX ¶ added in v0.12.0
ReplaceBLX replaces a BLX instruction at PC (offset). Find and Replace are the target offsets.
func (*Patcher) ReplaceBytes ¶
ReplaceBytes replaces the first occurrence of a sequence of bytes with another of the same length.
func (*Patcher) ReplaceBytesNOP ¶ added in v0.12.0
ReplaceBytesNOP replaces an instruction with 0046 (MOV r0, r0) as many times as needed.
func (*Patcher) ReplaceFloat ¶
ReplaceFloat replaces the first occurrence of a float.
func (*Patcher) ReplaceInt ¶
ReplaceInt replaces the first occurrence of an integer between 0 and 255 inclusively.
func (*Patcher) ReplaceString ¶
ReplaceString replaces the first occurrence of a string with another of the same length.
func (*Patcher) ReplaceZlib ¶ added in v0.7.0
ReplaceZlib replaces a part of a zlib css stream at the current offset.
func (*Patcher) ReplaceZlibGroup ¶ added in v0.11.0
func (p *Patcher) ReplaceZlibGroup(offset int32, repl []Replacement) error
ReplaceZlibGroup is the same as ReplaceZlib, but it replaces all at once.
func (*Patcher) ResetBaseAddress ¶
func (p *Patcher) ResetBaseAddress()
ResetBaseAddress moves cur to 0.
type Replacement ¶ added in v0.11.0
type Replacement struct {
Find, Replace string
}
Replacement is a replacement for ReplaceZlibGroup.