GithubHelp home page GithubHelp logo

itsethra / yclass Goto Github PK

View Code? Open in Web Editor NEW
115.0 4.0 11.0 1.45 MB

Inspect and recreate in-memory data structures

License: MIT License

Rust 99.95% Shell 0.05%
data-structures egui memory rust gui modding-tools

yclass's Introduction

YClass

A program that allows you to inspect and recreate data structures of other processes.

Installation

To compile YClass you will need Rust.

git clone https://github.com/ItsEthra/yclass
cd yclass
cargo r --release

Features

  • Preserving fields' offsets when other fields are replaced.
  • Different variable types:
    • I8, I16, I32, I64
    • U8, U16, U32, U64
    • F32, F64
    • Pointer, String Pointer
    • Bool
  • Generating Rust/C++ code out of classes.
  • Saving/Opening project files.
  • Plugin API to customize reading behavior.
  • Preview of the memory pointer is pointing to.
  • Structure spider: tool that can search through multilevel pointers for specific values.

Hotkeys

  • Ctrl-C - Copies selected field's address (in hex) to the clipboard.
  • Ctrl-Shift-C - Copies selected field's value as 8 byte (in hex) to the clipboard.
  • Alt-A - Open a window to select a process to attach.
  • Alt-Ctrl-A - Attach to the most recent process.
  • Alt-D - Detach from the process.

Planned features

  • - Writing values.
  • - Save/Open project files.
  • - Pointer preview on hover with unknown fields.
  • - Show in which module pointer address falls.
  • - Disassembly of function pointers.

Plugin API

You can write a plugin to change the way YClass reads memory. To do that you will need a shared library(.dll or .so) that exports following functions specified below. u32 return value should be treated as status code. If it's 0 then no error is displayed. Otherwise return value is displayed in the notification. Required functions:

  • fn yc_attach(process_id: u32) -> u32 - Called when attaching to a process.
  • fn yc_read(address: usize, buffer: *mut u8, buffer_size: usize) -> u32 - Called(very frequently) when reading memory.
    • address is in attached process address space.
    • buffer is in current process address space.
  • fn yc_write(address: usize, buffer: *const u8, buffer_size: usize) -> u32 - Called(rarely) when writing memory.
    • address is in attached process address space.
    • buffer is in current process address space.
  • fn yc_can_read(address: usize) -> bool - Called(mildly frequently) to check if address is "readable", i.e. a pointer.
    • address is in attached process address space.
  • fn yc_detach() - Called when detaching from a process.

After its done, put your library at ./plugin.ycpl or specify the path under plugin_path key in your config.

Config path:

  • Windows - C:\Users\%USER%\AppData\Roaming\yclass\config.toml
  • Unix - ~/.config/yclass/config.toml($XDG_CONFIG_HOME)

yclass's People

Contributors

emesare avatar itsethra avatar kasuromi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

yclass's Issues

Performance issues with large classes

With large classes there is quite a large performance hit associated

  • 4096 x 4 Brings the program down to a very slow speed

For whatever reason cargo build --release is broke

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.