https://github.com/guitmz/offsetter
Convert between file offsets and virtual addresses with Go
https://github.com/guitmz/offsetter
debugging golang reverse-engineering
Last synced: 4 months ago
JSON representation
Convert between file offsets and virtual addresses with Go
- Host: GitHub
- URL: https://github.com/guitmz/offsetter
- Owner: guitmz
- License: mit
- Created: 2019-08-14T10:39:15.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-08-22T09:36:23.000Z (over 6 years ago)
- Last Synced: 2025-01-05T22:27:42.562Z (about 1 year ago)
- Topics: debugging, golang, reverse-engineering
- Language: Go
- Homepage: https://www.guitmz.com
- Size: 8.79 KB
- Stars: 1
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# offsetter
[](https://goreportcard.com/report/github.com/guitmz/offsetter)
Small package to convert between file offsets and virtual addresses (partialy inspired by some code of [pwnlib](https://github.com/Gallopsled/pwntools/tree/dev/pwnlib)). For the moment, only `ELF` files are supported.
# Install
Install with `go get -u github.com/guitmz/offsetter`
# Example
```
$ cat example.go
```
```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)
```