This is a repository for a Hitman Blood Money Trainer that I built with C, C++, and some Assembly.
The main purpose of this project was to get familiar with programming internal GUIs from scratch and
familiarize myself with process hooking techniques.
Demonstration of God Mode and Teleport hacks.
[ What the fuck did I actually learn ]
The DLL must be injected WHILE the game is running in the foreground.
It is very finicky and will crash/hang otherwise.
The hacks written are:
- Press
Numpad 1
to toggle Infinite Ammo. - Press
Numpad 2
to toggle Infinite Health. - Press
Numpad 3
to toggle No Reactions - Press
Numpad 4
to toggle One Shot Kill. - Press
Numpad 5
to toggle No Recoil. - Press
Numpad 6
to toggle Flash (5x speed hack). - Press
Numpad 9
to kill all enemies in a level. - Press
Shift + T
to teleport to current camera coordinates. - Press
Shift + X
to kill the entity at the current camera coordinates. - Press
T
to teleport to current entity. - Press
X
to kill the current entity. - Press
[
previous entity. - Press
]
next entity. - Press
END
to eject.
One shot kill currently prevents "Accidental deaths" from counting as killed targets.
The player has to manually kill them in order for their death to register. This may be
solvable by changing the one shot op code from mov
to xor
There are currently game states that may trigger a crash if cheats are enabled.
These game states include:
- Restarting a mission with cheats enabled (sometimes)
Just use your favorite payload injector and throw that bitch in there.
It works better when the game is windowed.
git clone https://github.com/0xvpr/HM3-Trainer.git hm3-trainer && cd hm3-trainer
make docker-container
make docker-build
- Windows
# Go fuck yourself
- Find reliable weapon pointer.
- Find reliable entity list pointer.
- Find reliable player health pointer.
- Find a way to prevent teleports from crashing the game.
- Find reliable 'in game' boolean (or other explicit distinction).
- Update player coordinates in real-time (GUI)
- Include entity type in GUI main window, just below the entity number.