Home

Awesome

osmium-logo

osmium - A Framework for Windows external cheats, written in modern C++.

The following content may change frequently due to the updates of the framework and might be not up2date at all times.

Table of Contents

  1. A small foreword
  2. Installation & Setup
  3. Compilation
  4. Design of the framework
  5. Examples of how to use osmium

Foreword

Since I began programming external cheats, I always wanted to have my own framework which I can use for any game and which should be easy and quick to setup. This was and is not an easy task for me but this project should not be a demonstration for best practices. It is a collection of functionalities which I need to get my cheats done and these functionalities are not implemented in the best or stable way possible. I got my own way of doing things and I am learning everyday new stuff, which I want to implement and test right away. As I am still learning this project will be growing in it's own ways and will learn with me while evolving. This description should give you, as an reader, a better feeling for the framework because you read the thoughts of the creator and his individual philosophy.

My goal for the framework is modularity and genericity at the right places. The problem I have is that I don't know currently how I combine all different "modules" of the framework clever enough, so they will still be generic and easy to setup. At some point you need specific definitions and restrictions implemented and these are all individual. So the project might seem a bit more complicated to setup than it needed to be. I hope I can take up on this problem in the future and solve it in a clever way.

Until then I do my best to describe every tricky part as good as possible for me! Thank you very much for reading this foreword, which I think this is important!

If you have any recommendations, encounter any problems or just want to give me some hints - make sure to contact me or open a pull request.

Installation & Setup

For the framework to work out of the box you need some steps. The first thing is the right folder structure, because the relative paths won't work properly if the folder structure is not right. Because I am using Visual Studio as a IDE for C++, I will show the folder structure for this case. Feel free to adapt the paths for yourself, if needed.

The default folder structure is the following (Example for Visual Studio):

project
│   project.vcxproj
│   project.vcxproj.filters    
│   project.vcxproj.user
|   main.cpp
|
└───osmium
    │   README.md
    │   .gitignore
    │
    |───Cheat
    |   │   cheat.hpp
    |   │   ...
    |
    └───Includings
        │   custom_data_types.hpp
        │   ...
    ...
...

After you did create your visual studio project, you need to clone this repository into it. With the following command you can clone the repo correctly.

  1. git clone https://github.com/cragson/osmium.git

If you want to use the Overlay of the framework you need the DirectX-SDK, which you can download directly by clicking the link down below. And the project will probably not compile without linking the includings and libs with it. I'll explain these steps later on in detail.

  1. https://www.microsoft.com/en-us/download/confirmation.aspx?id=6812

Compilation

To compile a project with this framework you need to prepare some things before.

  1. Make sure to link the DirectX includings and libs with Visual Studio
    • Go to Project -> Properties -> VC++ Directories
    • You need to enter your DirectX Includes path under External Include Directories
    • You need to enter your DirectX Libraries path under Library Directories
    • Also make sure to do these changes for all configurations (Debug and Release) and the correct Platform!
    • Another thing to watch out for is the correct library path from DirectX for your current platform!
    • Project Settings
    • DirectX Linking
  2. Make sure to set the correct C++ Language Standard
    • Go to Project -> Properties -> General
    • Try setting the C++ Language Standard to /std:c++20, if this won't work for some reason try setting it to /std:c++latest
    • C++ Language Standard

After these steps you should be able to successfully compile.

Design of the framework

The framework contains the following modules:

Examples