A C++ library to attach to the NieR:Automata process and read/write memory.
Using NieRHook
Memory Reference
NieRHook Reference
#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>
#include <thread>
#include "NierHook.hpp"
using namespace std;
//Function used to exit the program
void ENDPressed(NieRHook* hook) {
while (true) {
if (GetKeyState(VK_END) & 0x8000) //END button pressed
{
//Disable cheats before exiting
hook->InfiniteDoubleJump(false);
hook->IgnoreUpgradeMaterials(false);
//Stop hook
hook->stop();
return;//exit function
}
}
}
/*This is a showcase program of the hook
* As NieR:Automata is a x64 program, you must compile this solution in x64.
*/
int main()
{
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);//Look for memory leaks
NieRHook hook;
cout << "Hooking..." << endl;
//Hook to process
while (!hook.isHooked()) {
hook.start();
}
cout << "Hooked" << endl;
//Enable some cheats
hook.InfiniteDoubleJump(true);
hook.IgnoreUpgradeMaterials(true);
//Add some items
//For ID reference please visit github.com/Asiern/NieRHook Readme
hook.addItem(510, 80); //Beast Hide ID => 510
hook.addItem(0, 10); //Small Recovery => ID 0
hook.addItem(721, 1); //Data chip B => ID 721
hook.addItem(400, 99); //E-Drug => ID 400
//Add some weapons
hook.addWeapon(0x4D8, 1); //Type-40 Blade => ID 0x4D8
hook.addWeapon(0x41A, 1); //Type-40 Sword => ID 0x41A
//Create a thread to exit when the 'END' button is pressed
std::thread exitThread(ENDPressed, &hook);
//Print some values
while (hook.isHooked()) {
hook.update();//update hook internal values (Position, Health, Level...)
std::cout << "X: " << hook.getXPosition() << " Y: " << hook.getYPosition() << " Z: " << hook.getYPosition() << std::endl;
std::cout << "Health: " << hook.getHealth() << std::endl;
std::cout << "Press END to exit..." << std::endl;
Sleep(500);
system("cls");
}
//Join thread and exit
exitThread.join();
return (0);
}
You can find all the used IDs and offsets here
Start
- attach the hook toNieRAutomata.exe
processStop
- detach the hook from processisHooked
- return true if hookedhookStatus
- ensures the status of the hook, if processID changes stops the hookgetProcessID
- returns process IDupdate
- refresh hook & attributesgetLevel
- return player's levelgetHealth
- returns player's healthgetMaxHealth
- returns player's max healthgetFunds
- returns player's Funds(G)getEXP
- returns player's EXPgetXPosition
- returns player's X positiongetYPosition
- returns player's Y positiongetZPosition
- returns player's Z positionsetPosition
- sets the position of the playersetHealth
- sets player healthNoClip
- enables or disables No ClipNoCooldown
- enables or disables No CooldownInfiniteDoubleJump
- enables or disables Infinite Double JumpInfiniteAirDash
- enables or disables Infinite Air DashIgnoreUpgradeMaterials
- enables or disables Ignore Upgrade MaterialsFreeCamera
- enables or disables free camera movementsetGameSpeed
- sets game speedaddItem
- Adds a specific quantity of items to the inventory (See item IDs at Memory Reference)removeItem
-Removes item from memory (See item IDs at Memory Reference)addWeapon
- Adds a weapon to the inventory (See weapon IDs at Memory Reference)removeWeapon
- removes a weapon from the inventory (See weapon IDs at Memory Reference)setHUDOpacity
- sets the opacity of the HUDsetColor
- sets RGBColor combination