binana/go/app/util/exe.go

32 lines
512 B
Go
Raw Normal View History

2026-03-20 01:58:16 -04:00
package util
import (
"debug/pe"
"os"
)
func get_exe_base_address(name string) (base_address uint64, err error) {
var file *os.File
file, err = os.Open(name)
if err != nil {
return
}
var (
pe_file *pe.File
)
pe_file, err = pe.NewFile(file)
if err != nil {
return
}
base_address = uint64(0x400000)
switch h := pe_file.OptionalHeader.(type) {
case *pe.OptionalHeader32:
base_address = uint64(h.ImageBase)
case *pe.OptionalHeader64:
base_address = h.ImageBase
}
file.Close()
return
}