fmemory
v0.1.0
Published
A simple node add-on for reading and writing memory on Linux, powered by gmem.
Downloads
15
Maintainers
Readme
fmemory
A simple node add-on powered by gmem for reading/writing memory in a given process on GNU/Linux.
- get process id through process name
- get module base address through module name
- memory reading
- memory writing
- get call address of a function
- vector3d and vector2d support _(read, write)_
- shellcode execution _(maybe)_
- high privileges helpers
- signature reader/scanner
🚧 more to come..
Since this is a Node addon, you'll need cmake-js
, node-addon-api
, and a C++ compiler (GCC
or clang
).
To install this addon simply type: npm install fmemory
if you get an error related to cmake-js, make sure that node.js is updated to the latest version and also make sure that cmake-js
is installed globally and node-addon-api
is installed as well. (It doesnt need to be installed globally)
The usage is pretty straight-forward.
Here's how:
const fmemory = require("fmemory");
const clientStateAddress = 0xDEADBEEF
const deltaTickOffset = 0x123
const main = (() => {
// get process id
const processID = fmemory.getProcessID("csgo_linux64")
// get engine module base address
const engineModuleBaseAddress = fmemory.getModuleBaseAddr("engine_client.so", processID)
// another way to get the module base address
// const engineModuleBaseAddress = fmemory.getModuleBaseAddr("engine_client.so", "csgo_linux64")
// get client state address
const pClientState = fmemory.readMemory(engineModuleBaseAddress + clientStateAddress, fmemory.INT)
if (pClientState) {
// force update
fmemory.writeMemory(pClientState + deltaTickOffset, -1 /* <- value */, fmemory.BYTE)
}
})()
NOTE: This works with Wine/Proton as well. (fmemory still needs improvements on this area, but it works.)
When using writeMemory
or readMemory
functions, you will need to tell the data type parameter.
It can either be a string
:
"int32", "uint32", "int64",
"uint64", "long", "ulong",
"short", "float", "double",
"byte", "char", "uchar",
"bool" "string", "pointer"
Or you can use one of the constants
provided by the library:
fmemory.INT, fmemory.UINT, fmemory.INT64,
fmemory.UINT64, fmemory.LONG, fmemory.ULONG,
fmemory.SHORT, fmemory.FLOAT, fmemory.DOUBLE,
fmemory.BYTE, fmemory.CHAR, fmemory.UCHAR,
fmemory.BOOL, fmemory.STRING, fmemory.POINTER
fmemory is available under the MIT License