Small package to convert between file offsets and virtual addresses (partialy inspired by some code of pwnlib). For the moment, only ELF
files are supported.
Install with go get -u github.com/guitmz/offsetter
$ cat example.go
package main
import (
"debug/elf"
"fmt"
"github.com/guitmz/offsetter"
)
func check(err error) {
if err != nil {
panic(err)
}
}
func main() {
targetFile, err := elf.Open("/bin/ls")
check(err)
defer targetFile.Close()
loadAddress, err := offsetter.GetLoadAddress(targetFile)
check(err)
hexOffset, uintOffset, err := offsetter.VaddrToOffset(targetFile, loadAddress, targetFile.Entry)
check(err)
fmt.Printf("Offset: %s (%d)\n", hexOffset, uintOffset)
hexVaddr, uintVaddr, err := offsetter.OffsetToVaddr(targetFile, uintOffset)
check(err)
fmt.Printf("Vaddr: %s (%d)\n", hexVaddr, uintVaddr)
}
$ go run example.go
Offset: 0x42d4 (17108)
Vaddr: 0x4042d4 (4211412)