Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/andoryuuta/kiwi
A package for memory editing in go.
https://github.com/andoryuuta/kiwi
go golang memory memory-editing memory-hacking
Last synced: 2 months ago
JSON representation
A package for memory editing in go.
- Host: GitHub
- URL: https://github.com/andoryuuta/kiwi
- Owner: Andoryuuta
- License: mit
- Created: 2015-07-03T03:50:35.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-08-27T01:11:34.000Z (over 4 years ago)
- Last Synced: 2024-10-24T19:41:45.226Z (3 months ago)
- Topics: go, golang, memory, memory-editing, memory-hacking
- Language: Go
- Homepage:
- Size: 40 KB
- Stars: 38
- Watchers: 4
- Forks: 7
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Kiwi
[![GoDoc](https://godoc.org/github.com/Andoryuuta/kiwi?status.svg)](https://godoc.org/github.com/Andoryuuta/kiwi)A package for memory editing in go.
## Current Features
* Reading and Writing with support for [uint & int 8, 16, 32, 64] [float 32, 64] data types
* Support for Windows and Linux(assuming /proc/ directory exists.)## _Future_ plans
* Pattern scanning for bytecode
* Call remote functions via injected assembly
* Hooking functions via injected assembly
* Setting breakpoints via windows debugging api
* Mono runtime features (if hooking and remote functions are possible)## Installation
`go get github.com/Andoryuuta/kiwi`## Usage
```Go
package mainimport (
"log""github.com/Andoryuuta/kiwi"
)func main() {
// The memory address of variable inside of target process.
externVarAddr := uintptr(0x001A51E8)// Find the process from the executable name.
proc, err := kiwi.GetProcessByFileName("example.exe")
if err != nil {
log.Fatalln("Error while trying to find process.")
}// Read from the target process.
externVar, err := proc.ReadUint32(externVarAddr)
if err != nil {
log.Fatalln("Error while trying to read from target process.")
}// Output the variable we read.
log.Println("Read", externVar)// Write a new value of 1000 to the variable
err = proc.WriteUint32(externVarAddr, 1000)
if err != nil {
log.Fatal(err)
}
}
```