Crates.io | rcheat |
lib.rs | rcheat |
version | 0.2.0 |
source | src |
created_at | 2024-09-10 08:48:36.146975 |
updated_at | 2024-11-20 16:00:58.167493 |
description | Get/modify variable's value in another Linux running process |
homepage | https://github.com/handy-sun/rcheat |
repository | https://github.com/handy-sun/rcheat |
max_upload_size | |
id | 1370188 |
size | 86,988 |
Get/modify simple variable's value in another Linux running process
In order to install, just run the following command
cargo install --force rcheat
This will install cargo-make in your ~/.cargo/bin
.
Make sure to add ~/.cargo/bin
directory to your PATH
variable.
You will have a executable available: rcheat
Suggest using the latest version
git clone https://github.com/handy-sun/rcheat.git
cd rcheat
cargo build
You will have a executable available: ./target/debug/rcheat
Tips:
If download speed from crates.io
is too slow. use a mirror to speed up(e.g. use rsproxy).
for example, a C
source file onlyc.c
with some global variables:
#include <unistd.h>
const char sc_sig_arr[][6] = { " ", "HUP", "INT", "QUIT", "ILL", "TRAP", "IOT", "BUS", "FPE", "KILL" };
const char techs[] = "\x02str.wa : ? !\ndaw\r21";
struct DemoStru {
int int32;
short uint16;
};
struct DemoStru structure;
int main() {
structure.int32 = 0x7ffe8092;
structure.uint16 = 0x321b;
while (1) {
sleep(30);
}
return 0;
}
Then compile and run it:
gcc onlyc.c -o onlyc && ./onlyc
Get pid of onlyc
(e.g. use command: pidof
) and use rcheat
with -p
option:
NOTE: This program must be run with root privileges!
pidof onlyc
# output: 13725
sudo rcheat -p 13725
Then will get the output about all global variables about this program
...
Matched count: 3
Index: var_name | var_size(B)
0: sc_sig_arr | 60
1: structure | 8
2: techs | 21
Please input index to choose the var(default is 0):
Input 2
and Enter
, you will see the byte value and ascii content of this variable (control char that unvisible show as .
)
0x0000: 0273 7472 2e77 6120 3a20 3f20 210a 6461 ┃ .str.wa : ? !.da
0x0010: 770d 3231 00 ┃ w.21.
You also can specify the total name or partly keyword of the variable with option -k
sudo rcheat -p 13725 -k sig_arr
...
0x0000: 2000 0000 0000 4855 5000 0000 494e 5400 ┃ .....HUP...INT.
0x0010: 0000 5155 4954 0000 494c 4c00 0000 5452 ┃ ..QUIT..ILL...TR
0x0020: 4150 0000 494f 5400 0000 4255 5300 0000 ┃ AP..IOT...BUS...
0x0030: 4650 4500 0000 4b49 4c4c 0000 ┃ FPE...KILL..
After version 0.1.3
, option -n/--name
can query pid by process name
sudo rcheat -n onlyc -k sig_arr
The development plan of the project and the functions to be implemented
.debug*
sectiontable
to format matrix table datalog/env_logger
etc.lua
to customized outputpidof/pgrep
)