A simple cheat engine clone written in Rust.
- Process listing (shows actual running processes on the system)
- Memory scanning for exact values
- Fuzzy matching for floating-point values
- Memory modification
- Interactive mode for continuous workflow
Make sure you have Rust and Cargo installed. Then clone this repository and build the project:
git clone https://github.com/streamtechteam/cheated_cheat_engine.git
cd cheated_cheat_engine
cargo build --releaseFor the best experience, use the interactive mode which allows you to attach to a process and perform multiple operations in the same session:
# Start interactive mode
./cheated_cheat_engine interactive
# In interactive mode, you can use these commands:
# > list # List running processes
# > attach <process_name> # Attach to a process
# > scan <value> # Scan for a specific value
# > scan <value> --fuzzy <tolerance> # Fuzzy scan
# > modify <address> <new_value> # Modify a value
# > help # Show help
# > exit # Exit interactive modeYou can also use individual commands, but note that each command runs in a separate process:
# List running processes
./cheated_cheat_engine list
# Attach to a process (shows how to continue in interactive mode)
./cheated_cheat_engine attach process_namelistorl- List running processesattach <process_name>ora <process_name>- Attach to a processscan <value>ors <value>- Scan for a specific value in the attached processscan <value> --fuzzy <tolerance>- Fuzzy scan for a value with tolerancemodify <address> <new_value>orm <address> <new_value>- Modify a value at an addresshelporh- Show helpexitorquitorq- Exit interactive mode
$ ./cheated_cheat_engine interactive
> list
Listing running processes...
systemd (PID: 1)
my_game (PID: 12345)
> attach my_game
Attaching to process: my_game
Successfully attached to process: my_game (PID: 12345)
> scan 100
Scanning for value: 100 in process my_game (PID: 12345)
Found 2 result(s):
Address: 0x555555555000, Value: 100
Address: 0x555555556000, Value: 100
> modify 0x555555555000 999
Modifying address 0x555555555000 to value 999 in process my_game (PID: 12345)
Successfully wrote 4 bytes to address 0x555555555000We've included a simple test application that you can use to verify the cheat engine works correctly:
# Build and run the test application
cd test_app
cargo run
# In another terminal, use the cheat engine to modify its values
../cheated_cheat_engine interactiveSee test_app/README.md for detailed instructions on how to use the test application.
This implementation works on both Windows and Unix-like systems (Linux, macOS):
- On Windows, it uses Windows API to enumerate processes and read/write memory
- On Unix-like systems, it reads from the
/procfilesystem and usesprocess_vm_readv/process_vm_writev
- Permissions: On Unix-like systems, you may need to run with
sudoto access memory of other processes - Process Security: Some processes may have memory protection that prevents reading or writing
- Address Validity: Memory addresses can change between runs of a program
This is a simplified implementation for educational purposes. A real cheat engine would need:
- More sophisticated scanning algorithms
- A graphical user interface
- Additional data type support
This project is licensed under the MIT License.