//Warning//
//Achtung//
You have got to have some basic C++ knowledge!
Du brauchst ein wenig Wissen inC++ um das hier zu machen 
Hey all,
Hey ihr,
I'm going to show you all how to make a NoMenu hack using Visual C++ 2008.
Download Visual C++ 2008 here:
Ich zeige euch mal ,wie ihr ein NoMenü Hack in Visual C++ 2008 macht.
Download Visual C++ 2008 hier:
Select language and press "Download"
Wähl deine Sprache aus und drück "Download"
Now install and etc. (you have to reboot once)
Jetzt installiere das Programm, etc. (mach ein Neustart am ende =D )
When installed start "Microsoft Visual C++ 2008 Express Edition" :
Wenn du es installiert hast starte C++:
When fully started up. Go to File >>> New >>> Project :
Wenn du es gestartet hast erstelle ein neues Projekt ( Datei>Neu>Neues Projekt)
In left menu select "Win32" and than on the right select "Win32 Project" than enter a name and press ok :
Wähle im linken Men Win32 und dann wähle rechts Win32 Project.
Tipp den Namen ein und akzeptiere:
Press next, than mark empty project and press "Finish" :
Drück Weiter und dann makiere ein leeres Projekt und drücke Ende:
Now, in the left menu your project will appear:
Dann kommt an der linken Seite ein Menü
Solution 'NoMenuLegendary' (1 project)
- NoMenuLegendary
* Header Files
* Resource Files
* Source Files
To start the base of the NoMenu hack, right click on the folder "Source Files" and than "Add" >>> "New Item" :
Mach ein rechtsklick und drück hinzufügen > neues Element
Now in the menu that shows up, click on "C++ File (.ccp)" and than enter name (example: "main") than pres "Add":
[Übersetzung folgt...]
Now a blank document will appear.
This is where the real NoMenu hack building starts

.
We start off defining some windows stuff:
Code:
#include <windows.h>
#include <stdio.h>
Than we are going to define our hacks

:
Code:
//--------------------------Define Hacks--------------------------//
#define Playerpointer <Playerpointer addie here>
#define Serverpointer <Serverpointer addie here>
//--------------------------End Define Addies--------------------------//
These are just the basic addies that you will allways need.
(by the way, what // does is: It makes it not include in the hack so you won't recieve errors for this.
It's most used to remember things for if you watch back later and you're like WTH did I do ;p.
Beneath the addies define something for the "HackThread" <<< I will tell more about what this does later.
Code:
//--------------------------Define HackThread--------------------------//
DWORD *ingame= (DWORD*)Playerpointer;
DWORD *outgame= (DWORD*)Serverpointer;
//--------------------------End Define HackThread--------------------------//
After this you can start off adding hacks to your NoMenu. For example I'll take SuperJump and NoFallDamage.
Code:
//--------------------------Start Hacks--------------------------//
void superjump () //super jump
{
if(GetAsyncKeyState(VK_CONTROL) &1)
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0)
{
*(float*)(dwPlayerPtr+OFS_Z) = 1000;
}
}
}
void nfd () //NFD
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0)
{
*(float*)(dwPlayerPtr+NFD_Player_OffSet) = -20000;
}
}
//--------------------------End Hacks--------------------------//
You see that there are 2 adresses we don't know yet.
OFS_Z and NFD_Player_Offset.
So what we have to do is define those aswell.
Code:
#define OFS_Z <OFS_Z addie here>
#define NFD_Player_OffSet <NFD addie here>
You add those to the "Define Hacks"
Now. We are going to add a hackthread.
Code:
//-------------------------HackThread--------------------------//
void HackThread()
{
for(;; )
{
if(*ingame)
{
superjump();
nfd();
}
if(*outgame)
{
}
}
Sleep(200); //prevent for overloading the cpu
}
//--------------------------End HackThread--------------------------//
You see I included the hacks "superjump" and "nfd".[/color]
[
q]
What does a HackThread do?
[
a]
It includes the hacks you have added to your NoMenu hack. When you don't add them in the hackthread they will NOT work ingame.
[
q]
Why is there an ingame and outgame?
[
a]
The ingame is for Playerhacks like stamina, superjump, no fall damage etc. The outgame is for Serverhacks like Premium, Extra slot, Supermaster etc.
The end of the hack:
Code:
//--------------------------End--------------------------//
BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpvReserved)
{
if(dwReason == DLL_PROCESS_ATTACH)
{
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)HackThread, 0, 0, 0);
}
return TRUE;
}
}
//--------------------------End--------------------------//
[
q]
What does this do?
[
a]
When you inject to WarRock, this makes sure all you have put in the HackThread will be activated to WarRock so it actually works. Alot of people forget to include Hackthread and say: "My hack doesn't work!".
In the end it should look like this:
Code:
#include <windows.h>
#include <stdio.h>
//--------------------------Define Hacks--------------------------//
#define Playerpointer <Playerpointer addie here>
#define Serverpointer <Serverpointer addie here>
#define OFS_Z <OFS_Z addie here>
#define NFD_Player_OffSet <NFD addie here>
//--------------------------End Define Addies--------------------------//
//--------------------------Define HackThread--------------------------//
DWORD *ingame= (DWORD*)Playerpointer;
DWORD *outgame= (DWORD*)Serverpointer;
//--------------------------End Define HackThread--------------------------//
//--------------------------Start Hacks--------------------------//
void superjump () //super jump
{
if(GetAsyncKeyState(VK_CONTROL) &1)
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0)
{
*(float*)(dwPlayerPtr+OFS_Z) = 1000;
}
}
}
void nfd () //NFD
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0)
{
*(float*)(dwPlayerPtr+NFD_Player_OffSet) = -20000;
}
}
//--------------------------End Hacks--------------------------//
//-------------------------HackThread--------------------------//
void HackThread()
{
for(;; )
{
if(*ingame)
{
superjump();
nfd();
}
if(*outgame)
{
}
}
Sleep(200); //prevent for overloading the cpu
}
//--------------------------End HackThread--------------------------//
//--------------------------End--------------------------//
BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpvReserved)
{
if(dwReason == DLL_PROCESS_ATTACH)
{
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)HackThread, 0, 0, 0);
}
return TRUE;
}
}
//--------------------------End--------------------------//
Now after this is done, Press F7 or go to top menu: "Build" >>> "Build Solution (F7)".
Beneath it will say of you still have errors. If it says succeeded but warnings just ignore the warnings
.
In that window of text, there will be something like:
1>Build log was saved at "file://c:\Users\Secret\Documents\Visual Studio 2008\Projects\NoMenuLegendary\Debug\BuildLog.htm"
Look up: c:\Users\Secret\Documents\Visual Studio 2008\Projects\NoMenuLegendary\Debug (in my case)
And you will find your dll in there
.
All hacks that DON"T need bypass:
- SuperJump
- No Fall Damage
- Virtual Dig
- No spread
- No water
- No bounds
- No recoil
- Stamina
- Speed
- No fog
- Fullbright
- Fast all (fast ammo, fast health, fast repair, fast flag)
- Teleport
- No spawn
- Fifth slot
- Premium
- Supermaster
- Extra clip Assault
- Extra clip Sniper
- Low Gravity
Other Hotkeys and Source Codes
//Low Gravity :: Hotkey = Middle mousebutton
Code:
void lowgravity ()
{
if (GetAsyncKeyState(VK_MBUTTON)) //hotkey is middel mouse buttom
{
DWORD dwPlayerPtr = *(DWORD*)ADR_PLAYERPTR;
if(dwPlayerPtr != 0)
{
*(float*)(dwPlayerPtr+OFS_GRAV) = 100.0f;
}
}
}
//5th Slot
Code:
void Slots5 ()
{
DWORD dwPlayerPtr = *(DWORD*)Serverpointer;
if(dwPlayerPtr != 0)
{
*(long*)(dwPlayerPtr+Slot5_OffSet) = 1;
}
}
//No Spread
Code:
void spread () //no spread
{
*(float*) No_Spread = 0;
}
//Extra Clip A/S
Code:
void ExtraAmmo () //we want extrea clip allways =)
{
*(int*)(Extra_Ammo_1) = 1;
}
void ExtraAmmo2 () //we want extrea clip allways =)
{
*(int*)(Extra_Ammo_2) = 1;
}
//Virtual Dig :: Hotkey = Alt
Code:
void Dig()
{
if(GetAsyncKeyState(VK_MENU) &1)
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0)
{
*(float*)(dwPlayerPtr+OFS_Z) = -2000;
}
}
}
//No Water
Code:
void nowater () //no water
{
long t=0;
unsigned long Protection;
VirtualProtect((void*)No_Water, sizeof(t), PAGE_READWRITE, &Protection);
memcpy((void*)No_Water, &t , sizeof(t));
VirtualProtect((void*)No_Water, sizeof(t), Protection, 0);
}
//No Bounds
Code:
void nobounds () //nobounds
{
long t=0;
unsigned long Protection;
VirtualProtect((void*)No_Bounds_2, sizeof(t), PAGE_READWRITE, &Protection);
memcpy((void*)No_Bounds_2, &t , sizeof(t));
VirtualProtect((void*)No_Bounds_2, sizeof(t), Protection, 0);
VirtualProtect((void*)No_Bounds_2, sizeof(t), PAGE_READWRITE, &Protection);
memcpy((void*)No_Bounds_2, &t , sizeof(t));
VirtualProtect((void*)No_Bounds_2, sizeof(t), Protection, 0);
}
//No Fall Damage
Code:
void nfd () //NFD
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0)
{
*(float*)(dwPlayerPtr+NFD_Player_OffSet) = -20000;
}
}
//No Recoil
Code:
void norecoil () //norecoil
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0)
{
*(float*)(dwPlayerPtr+OFS_NORECOIL1) = 0;
*(float*)(dwPlayerPtr+OFS_NORECOIL2) = 0;
*(float*)(dwPlayerPtr+OFS_NORECOIL3) = 0;
}
}
//Stamina: Stealth
Code:
void stamina () //stamina
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0)
{
*(float*)(dwPlayerPtr+Stamina_OffSet) = 30;
}
}
//Stamina: Full
Code:
void stamina () //stamina
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0)
{
*(float*)(dwPlayerPtr+Stamina_OffSet) = 100;
}
}
//Super Jump // 1000 ft. :: Hotkey= Control Button
Code:
void jump () //super jump
{
if(GetAsyncKeyState(VK_CONTROL) &1)
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0)
{
*(float*)(dwPlayerPtr+OFS_Z) = 1000;
}
}
}
//Speed Normal :: Hotkey = Numpad 0
Code:
void speedoff ()
{
if(GetAsyncKeyState(VK_NUMPAD0) &1<< 0xF)
{
*(float*)(Speed) = 100.0f;
}
}
//Speed x5 :: Hotkey = Numpad 3
Code:
void speedon3 ()
{
if(GetAsyncKeyState(VK_NUMPAD3) &1<< 0xF)
{
*(float*)(Speed) = 500.0f;
}
}
//Speed x3 :: Hotkey = Numpad 2
Code:
void speedon2 ()
{
if(GetAsyncKeyState(VK_NUMPAD2) &1<< 0xF)
{
*(float*)(Speed) = 300.0f;
}
}
//Speed x2 :: Hotkey = Numpad 1
Code:
void speedon1 ()
{
if(GetAsyncKeyState(VK_NUMPAD1) &1<< 0xF)
{
*(float*)(Speed) = 200.0f;
}
}
//No Fog
Code:
void nofog () //no fog
{
*(float*)GlassWalls_FarFog = 1166127104;//far fog address
*(float*)Near_Fog = 0; //nearfog addres
}
//Full Bright
Code:
void fullbright () //fullbright
{
*(int*)(Full_Bright_1) = 1092779973;
*(int*)(Full_Bright_2) = 1092779973;
*(int*)(Full_Bright_3) = 1092779973;
}
//Fast F/A/H/R
Code:
void FastAll ()
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0)
{
*(float*)Fast_Repair = 10.0f;
*(float*)Fast_Health = 5.0f;
*(float*)Fast_Flag = 10.0f;
*(float*)Fast_Ammo = 5.0f;
}}
//Teleport :: Hotkey= Numper Pad 5
Code:
void Teleport ()
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer; /// Player Pointer Addie
if(dwPlayerPtr != 0)
{
float PositionY = 0.0; float PositionX = 0.0;float PositionZ = 0.0;
PositionX = *(float*)(dwPlayerPtr + OFS_X);
PositionY = *(float*)(dwPlayerPtr + OFS_Y);
PositionZ = *(float*)(dwPlayerPtr + OFS_Z);
if(GetAsyncKeyState(VK_NUMPAD5)&1){
Telx = PositionX;
Tely = PositionY;
Telz = PositionZ;}
if(GetAsyncKeyState(VK_NUMPAD4)&1){
*(float*)(dwPlayerPtr + OFS_X) = Telx;
*(float*)(dwPlayerPtr + OFS_Y) = Tely;
*(float*)(dwPlayerPtr + OFS_Z) = Telz;}
if(GetAsyncKeyState(VK_NUMPAD6)&1){
*(float*)(dwPlayerPtr + OFS_X) += 30;}}}
//Quick Spawn
Code:
void Spawn ()
{
long t=0;
unsigned long Protection;
VirtualProtect((void*)ADR_QUICKSPAWN1, sizeof(t), PAGE_READWRITE, &Protection);
memcpy((void*)ADR_QUICKSPAWN1, &t , sizeof(t));
VirtualProtect((void*)ADR_QUICKSPAWN1, sizeof(t), Protection, 0);
VirtualProtect((void*)ADR_QUICKSPAWN2, sizeof(t), PAGE_READWRITE, &Protection);
memcpy((void*)ADR_QUICKSPAWN2, &t , sizeof(t));
VirtualProtect((void*)ADR_QUICKSPAWN2, sizeof(t), Protection, 0);
}
//SuperMaster
Code:
void Supermaster ()
{
DWORD dwSrvrPtr = *(DWORD*)Serverpointer;
if(dwSrvrPtr != 0){
*(int*)(dwSrvrPtr+Super_Master_OffSet) = 1;
}
}
//Bronze Premium
Code:
void bronze() //Bronze Premium
{
DWORD dwSrvrPtr = *(DWORD*)Serverpointer;
if(dwSrvrPtr != 0)
{
*(long*)(dwSrvrPtr+Premium_OffSet) = 1, 10; // 1 = bronze 2 = silver 3 = gold 4 = platinum
{
*(float*)(dwSrvrPtr+OFS_PREMIUM2) = 1, 1;
}}}
//Silver Premium
Code:
void silver() //SilverPremium
{
DWORD dwSrvrPtr = *(DWORD*)Serverpointer;
if(dwSrvrPtr != 0)
{
*(long*)(dwSrvrPtr+Premium_OffSet) = 2, 10; // 1 = bronze 2 = silver 3 = gold 4 = platinum
{
*(float*)(dwSrvrPtr+OFS_PREMIUM2) = 1, 1;
}}}
//Gold Premium
Code:
void gold() //Gold Premium
{
DWORD dwSrvrPtr = *(DWORD*)Serverpointer;
if(dwSrvrPtr != 0)
{
*(long*)(dwSrvrPtr+Premium_OffSet) = 3, 10; // 1 = bronze 2 = silver 3 = gold 4 = platinum
{
*(float*)(dwSrvrPtr+OFS_PREMIUM2) = 1, 1;
}}}
//Platinum Premium
Code:
void platinum () //Platinum Premium
{
DWORD dwSrvrPtr = *(DWORD*)Serverpointer;
if(dwSrvrPtr != 0)
{
*(long*)(dwSrvrPtr+Premium_OffSet) = 4, 10; // 1 = bronze 2 = silver 3 = gold 4 = platinum
{
*(float*)(dwSrvrPtr+OFS_PREMIUM2) = 1, 1;
}}}
//HOTKEYS
Code:
VK_LBUTTON -- Left mouse button
VK_RBUTTON --Right mouse button
VK_CANCEL -- Control-break processing
VK_MBUTTON -- Middle mouse button (three-button mouse)
VK_BACK -- BACKSPACE key
VK_TAB -- TAB key
VK_CLEAR -- CLEAR key
VK_RETURN -- ENTER key
VK_SHIFT -- SHIFT key
VK_CONTROL -- CTRL key
VK_MENU -- ALT key
VK_PAUSE -- PAUSE key
VK_CAPITAL -- CAPS LOCK key
VK_ESCAPE -- ESC key
VK_SPACE -- SPACEBAR
VK_PRIOR -- PAGE UP key
VK_NEXT -- PAGE DOWN key
VK_END -- END key
VK_HOME -- HOME key
VK_LEFT -- LEFT ARROW key
VK_UP -- UP ARROW key
VK_RIGHT -- RIGHT ARROW key
VK_DOWN -- DOWN ARROW key
VK_SELECT -- SELECT key
VK_PRINT -- PRINT key
VK_EXECUTE -- EXECUTE key
VK_SNAPSHOT -- PRINT SCREEN key
VK_INSERT -- INS key
VK_DELETE -- DEL key
VK_HELP -- HELP key
Well, this was about it. When I know more of something I forgot or something than I'll add it.
Credits:
Legendary for making tutorial.
Zeas for descovering this methode.
Fresh_Maker for sharing to FPS
Pasch22
Bmw;2418