Added memory address patching

This commit is contained in:
Eduard Urbach 2023-10-29 12:24:40 +01:00
parent 6f097c9eee
commit 23e8b67e88
Signed by: eduard
GPG key ID: 49226B848C78F6C8
9 changed files with 98 additions and 35 deletions

View file

@ -3,11 +3,8 @@ package elf
import (
"encoding/binary"
"io"
)
const (
minAddress = 0x10000
baseAddress = 0x40 * minAddress
"git.akyoto.dev/cli/q/src/config"
)
// ELF represents an ELF file.
@ -31,7 +28,7 @@ func New(code []byte, data []byte) *ELF {
Type: TypeExecutable,
Architecture: ArchitectureAMD64,
FileVersion: 1,
EntryPointInMemory: baseAddress + 0x80,
EntryPointInMemory: config.BaseAddress + config.CodeOffset,
ProgramHeaderOffset: HeaderSize,
SectionHeaderOffset: 0,
Flags: 0,
@ -45,12 +42,12 @@ func New(code []byte, data []byte) *ELF {
ProgramHeader: ProgramHeader{
Type: ProgramTypeLOAD,
Flags: ProgramFlagsExecutable,
Offset: 0x80,
VirtualAddress: baseAddress + 0x80,
PhysicalAddress: baseAddress + 0x80,
Offset: config.CodeOffset,
VirtualAddress: config.BaseAddress + config.CodeOffset,
PhysicalAddress: config.BaseAddress + config.CodeOffset,
SizeInFile: int64(len(code)),
SizeInMemory: int64(len(code)),
Align: Align,
Align: config.Align,
},
Code: code,
Data: data,