---
# System prepended metadata

title: hax-rs draft

---

# hax-rs draft

## Different categories

- Cheat setup:
    - [x] Main function
    - Might need to create hooks (internal)

- Memory functionality
    - [x] Reading/Writing memory
    - [ ] Pattern scanning(?)
    - **Bulk reading** (read entire struct in with one call)
    - **Caching values** (only reading once at start of game, ...)
    - Sanity checking pointer values if they are correct (in case you crash)
- Overlay: 
    - TODO: Generic implementation like memlib
    - Different default implementations
        - Creating a window
        - Known public exploits (discord overlay hooking, ...)
- Logger: ???
    - Do we need our own logger? 
- Cheat features: 
    - **CONFIG SYSTEM!!!**
x    - How to run them? 
    - How to register them? 
    - TODO: Make sure there's lots of discussion involved with this, since it's the most important thing. 
    - Idea #1: 
    ```
    #[feature]
    fn aimbot() {}
    ```
    
    - Idea #2: Harder to do, because we might need to create or pass some variables in the struct.
    ```
    #[derive(Feature)]
    struct Aimbot {}
    ```
- **Offsets:**
    - Automatic signature scanning
    - Testing if pointers are invalid
    - How to handle pointer encryption?


- **Math:**
    - Aimbot
    - Bone Matrix calc
    - ESP (box, 2d, w2s, ...)

- **Engine abstractions:**
    - Unreal Engine
    - Unity
    - Source Engine
    - ...

- **Injection helpers**: Automatically inject your dll during development (should be really easy and fast)



**Reference Implementation:** Would be the best to test the new features, help others figure out the framework. 
- CSGO? 
- Assault Cube?


## Possible problems: 
    
- Anticheats writing specific detections for this
- Performance



---

```

pub trait Operations {
    fn setup(&mut self);
    fn toggle(&mut self, key_state: i16);
    fn cleanup(&mut self);
}

#[derive(CheatConfig)]
pub struct AimbotConfig {
    
}

#[derive(CheatFeature)]
pub struct Aimbot {
    
}

// Should: 
// - state (toggle)
// - keybind?
// - config?
//     - aimbot fov, speed, ...


fn main() {
    let config = ...;
    
    let features = vec![
        Aimbot::register(context)
    ];
    
}
```



```
#[hax::main()]
fn main(ctx: Context) {
    
    
    let features = vec![
        Aimbot::register(context)
    ];
    
    
    CTX.unwrap()
    
}
```