#encryption #pointers #reverse-engineering

pointerguard

Pointer encryption library in rust

2 releases

new 0.1.1 Apr 13, 2025
0.1.0 Apr 13, 2025

#607 in Cryptography

MIT license

120KB
185 lines

pointerguard

Pointer encryption library in rust.

/// Example player struct.
struct Player {
  health: u32,
}

// turn box into encrypted pointer.
let player: EncryptedPtr<_> = Box::new(Player { health: 100 }).into();

assert_eq!(player.health, 100);

You can replace Box<T> with EncryptedPtr<T>, for example, to encrypt the reference to T.

Features

  • Random encryption method determined on EncryptedPtr instantiation, making it harder to reverse engineer.
  • Automatically drops and deallocates pointed object when EncryptedPtr goes out of scope.

Motivation

cheat engine results As you can see in this image, we can pointer scan (manually or automatically) to find the 'link' to the player's health: World -> people -> Person. To fix this just change Box<Person> to EncryptedPtr<Person>.

pointer_scan results

Now, just like that, the chain is "broken".

process_graphic

Dependencies

~1MB
~17K SLoC