This tutorial is a guide for making hacks in warrock
Here I will tell you how to make cheats for Warrock without needing an un-detected cheat engine.
Finding the addresses - Hard
You need two softwares to finish this tutorial:
Both can be obtained threw Google.
I used TheMidaUnpack from Okdodo.
In the Themida Unpacker
- To start load up the themida unpacker.
- Press "open" and navigate add this file to the unpacker:
- [warrock path]/system/Warrock.exe
- press "unpack"
- Exit out of the unpacker.
In Odbg
- Press File->Open (or F3)
- Open the file generated by the themida unpacker for my unpacker it was:
- [warrock path]/system/un_warrock_.exe
- You will get a message about breakpoints. Just press OK.
- Wait for it to load (loader bar at the bottom) do NOT press space.
- Do NOT go up to the top of the file. It will crash for some reason.
- Instead right click "Search for"->"All referenced text strings"
- Again wait.
- Double click on any of them. You should go back to the decoded data.
- Scroll up to the top of the now.
- Select the top row then go to the bottom and while holding <Shift> select the bottom row.
- This should select the entire document.
- Right click "Copy"->"To file" and save it somewhere easy to remember. I suggest putting the date somewhere in the name so you don't get confused when there is an update.
- Now everything is ready for you to start finding addresses.
In Text Editor
Here is a few addresses that are easy to find and good to use.
Open up the .txt document. Sometimes notepad doesn't work. You may need to open it with another text simple editing software. When I say simple I mean don't use things like word or adobe you don't need text formating...
Speed
Code:
Go to the top of the document and search down for this text:
ASCII "CBS_SWIM",0
Down about 20 lines search for
DD FLOAT 96.00000
Find
009B2E8C . 0000C042 DD FLOAT 96.00000
The address in this case is 009B2E8C
There are many other addresses. To keep the tutorial short I have only listed one. Have fun looking for them.
Side notes - It is possible to skip the creation of the txt file and just search for addresses using odbg, but I find it much easier to do using the text file, because odbg doesn't have a very good search feature.
Writing the code - Easy
Now you need to write the code for your injection.dll file.
Software you need:
- Visual C++ 2008 Express Edition - Can be found on Google.
- An Injector.exe - Attached to this document.
Open up visual c++ 2008 express edition and "File"->"New"->"Project..." select Win32, enter a name and location for the file.
Once done, delete all the files in the project and add a new "New Item..." .cpp and name it main.
Add the following code to the document:
Code:
#include <process.h>
#include <string>
#include <stdio.h>
#include <windows.h>
#include "addresses.h"
int cheatNow=0;
float setSpeed=100.0f;
void speed(){
if((GetAsyncKeyState(VK_F7)<0)==true){setSpeed-=50.0f;}
if((GetAsyncKeyState(VK_F8)<0)==true){setSpeed+=50.0f;}
*(float*) ADR_Speed = setSpeed;
}
void cheats(){
while(true){
if(GetAsyncKeyState(VK_F5)){
cheatNow=1;
setSpeed=100.0f;
}
if(GetAsyncKeyState(VK_F6)){
cheatNow=0;
setSpeed=100.0f;
}
if(cheatNow==1){
speed();
}
Sleep(200);//Do not delete this. If you do, it will lag up your computer.
}
}
BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved)
{
if(dwReason == DLL_PROCESS_ATTACH){
Sleep(1000);//Sleep a second and wait for warrock to load...
_beginthread( (void(*)(void*))cheats, 0, NULL);//info );
}
return TRUE;
}
Not done yet... Now you need to add the most important part. The Addresses. You know the ones you found above?
Now add a new item again and make a header file called addresses "addresses.h".
In this file add the following code
Code:
#define ADR_Speed 0x009B2E8C
Be sure to replace the 009B8EFC with the address you found for speed above.
Build your cheat with F7.
Having Trouble?
If you get a compiler error about stdafx.cpp you do the following:
- Press Alt+F7 to open up Properties
- Go to Configuration Properties->C/C++->Precompiled Headers
- There should be bold text next to "Create/Use Precompiled Header"
- Click on the bold text and an arrow on the right side appears, click on the arrow.
- Select "Not Using Precompiled Headers" and press OK
- Recompile With F7. If you still have errors, reply to this post.
Testing and Releasing Your Code
Copy the dll from [location of project]/Debug/name_of_dll.dll into the same folder as the injector.exe that you downloaded above and rename the dll to the same name as the exe. Double click on the exe, start warrock. Get into a game, press down F5 for a few seconds then run forward and hold down F7 until you find the speed you like.
To Release your cheat to other people, in visual c++, at the top where it says Debug, press the arrow down and select Release and copy the file from [location of project]/Release/name_of_dll.dll
Conclusion
I hope it was easy to follow. Everything should be pretty simple. Remember, you need to update most of your addresses every time there is an update. I will post a list of addresses on this website from time to time if you do not want to find them yourself. I have attached a few files that may come in handy in the creation of your cheats.
Enjoy and let me know how your cheats work.
Additional Cheats
No Delay
Open main.cpp
Just before void cheats(){ add this code:
Code:
BYTE DelayOld[2];
void noDelay(){
DWORD dwPlayerPtr = *(DWORD*)ADR_Playerpointer;
if(dwPlayerPtr != 0){
if(DelayOld[0]==0 && DelayOld[1]==0){
DWORD dwProtect;
VirtualProtect((void*)(ADR_NoDelay), 2, PAGE_EXECUTE_READWRITE, &dwProtect);
memcpy(DelayOld,(void*)(ADR_NoDelay), 2);
VirtualProtect((void*)(ADR_NoDelay), 2, dwProtect, NULL);
}
if((GetAsyncKeyState(VK_LBUTTON)<0)==true){
*(float*) (dwPlayerPtr+OFS_NoRecoil1) = 0.0f;
*(float*) (dwPlayerPtr+OFS_NoRecoil2) = 0.0f;
*(float*) (dwPlayerPtr+OFS_NoRecoil3) = 0.0f;
*(float*) ADR_NoSpread = 0.0f;
const BYTE nop[2] = {0x90,0x90};
DWORD dwProtect;
VirtualProtect((void*)(ADR_NoDelay), 2, PAGE_EXECUTE_READWRITE, &dwProtect);
memcpy((void*)(ADR_NoDelay), nop, 2);
VirtualProtect((void*)(ADR_NoDelay), 2, dwProtect, NULL);
}else{
*(float*) (dwPlayerPtr+OFS_NoRecoil1) = 0.000000001f;
*(float*) (dwPlayerPtr+OFS_NoRecoil2) = 0.000000001f;
*(float*) (dwPlayerPtr+OFS_NoRecoil3) = 0.000000001f;
*(float*) ADR_NoSpread = 0.000000001f;
const BYTE nop[2] = {166,67};
DWORD dwProtect;
VirtualProtect((void*)(ADR_NoDelay), 2, PAGE_EXECUTE_READWRITE, &dwProtect);
memcpy((void*)(ADR_NoDelay),DelayOld, 2);
VirtualProtect((void*)(ADR_NoDelay), 2, dwProtect, NULL);
}
}
}
Go down some and find speed(); before add noDelay();
Thank me if This helped you, or if you use this.
by UnknownPK