fmemory
A simple node add-on powered by gmem for reading/writing memory in a given process on GNU/Linux.
more info:
features:
- get process id through process name
- get module base address through module name
- memory reading
- memory writing
todo:
- get call address of a function
- vector3d and vector2d support _(read, write)_
- shellcode execution _(maybe)_
- high privileges helpers
- signature reader/scanner
installing:
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)
usage:
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.)
documentation:
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