Thumbs upC++ Warrock No Menu Hack tutorial (with screens)

Posts 1–13 of 13 · Page 1 of 1
C++ Warrock No Menu Hack tutorial (with screens)
Hey all,

I'm going to show you all how to make a NoMenu hack using Visual C++ 2008.


Download Visual C++ 2008 here: Click
+
Select language and press "Download":



Now install and etc. (you have to reboot once)

When installed start "Microsoft Visual C++ 2008 Express Edition"
When fully started up. Go to File >>> New >>> Project


In left menu select "Win32" and than on the right select "Win32 Project" than enter a name and press ok :


Press next, than mark empty project and press "Finish" :




Now, in the left menu your project will appear:

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" :



Now in the menu that shows up, click on "C++ File (.ccp)" and than enter name (example: "main") than pres "Add":



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--------------------------//
Now First you create 2 sections, PlayerHacks and ServerHacks like this:

Code:
//--------------------------Start Hacks--------------------------//

void PlayerHacks() // Start PlayerHacks
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0){



}} //End PlayerHacks

void ServerHacks() // Start ServerHacks
{
DWORD dwSrvrPtr=*(DWORD*)Serverpointer;
if(dwSrvrPtr!=0){



}} //End ServerHacks

//--------------------------End Hacks--------------------------//
Now we can put some hacks in. I'll take, Superjump, No Fall Damage and Visual Premium.

PlayerHacks: Superjump and No Fall Damage.
ServerHacks: Visual Premium.

This is what it should look like:

Code:
//--------------------------Start Hacks--------------------------//

void PlayerHacks() // Start PlayerHacks
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0){

//Superjump

{if(GetAsyncKeyState(VK_CONTROL) &1){
*(float*)(dwPlayerPtr+OFS_Z) = 1000;}}

//End Superjump

//No Fall Damage

{*(float*)(dwPlayerPtr+NFD_Player_OffSet) = -20000;}

//End No Fall Damage

}} //End PlayerHacks

void ServerHacks() // Start ServerHacks
{
DWORD dwSrvrPtr=*(DWORD*)Serverpointer;
if(dwSrvrPtr!=0){

//Visual Platinum Premium | 1220 days or smthing.

{*(long*)(dwSrvrPtr+Premium_OffSet) = 4, 10;{
*(float*)(dwSrvrPtr+OFS_PREMIUM2) = 1, 1;}}

//End Visual Platinum Premium

}} //End ServerHacks

//--------------------------End Hacks--------------------------//
You see that there are 4 adresses we don't know yet.

OFS_Z, NFD_Player_Offset, Premium_OffSet and OFS_PREMIUM2.

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
#define Premium_OffSet Premium_OffSet addie here
#define OFS_PREMIUM2 OFS_PREMIUM2 addie here
You add those to the "Define Hacks"

Now. We are going to add a hackthread.

Code:
//-------------------------HackThread--------------------------//

void HackThread() 
{
for(;; ) 
{
if(*ingame)
{
PlayerHacks();
}
if(*outgame)
{
ServerHacks();
}
}
Sleep(200); //prevent for overloading the cpu
}

//--------------------------End HackThread--------------------------//
You see I included the hacks "superjump" and "nfd".

[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 warc0ck, this makes sure all you have put in the HackThread will be activated to warc0ck 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>
#define Premium_OffSet <Premium_OffSet addie here>
#define OFS_PREMIUM2 <OFS_PREMIUM2 addie here>

//--------------------------End Define Addies--------------------------//

//--------------------------Define HackThread--------------------------//

DWORD *ingame= (DWORD*)Playerpointer;
DWORD *outgame= (DWORD*)Serverpointer;

//--------------------------End Define HackThread--------------------------//

//--------------------------Start Hacks--------------------------//

void PlayerHacks() // Start PlayerHacks
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0){

//Superjump

{if(GetAsyncKeyState(VK_CONTROL) &1){
*(float*)(dwPlayerPtr+OFS_Z) = 1000;}}

//End Superjump

//No Fall Damage

{*(float*)(dwPlayerPtr+NFD_Player_OffSet) = -20000;}

//End No Fall Damage

}} //End PlayerHacks

void ServerHacks() // Start ServerHacks
{
DWORD dwSrvrPtr=*(DWORD*)Serverpointer;
if(dwSrvrPtr!=0){

//Visual Platinum Premium | 1220 days or smthing.

{*(long*)(dwSrvrPtr+Premium_OffSet) = 4, 10;{
*(float*)(dwSrvrPtr+OFS_PREMIUM2) = 1, 1;}}

//End Visual Platinum Premium

}} //End ServerHacks

//--------------------------End Hacks--------------------------//

//-------------------------HackThread--------------------------//

void HackThread() 
{
for(;; ) 
{
if(*ingame)
{
PlayerHacks();
}
if(*outgame)
{
ServerHacks();
}
}
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
- Scope

All Codes (Sorry some are still writen the old way):

Code:
// Hack Codes \\

//-------------All Server Hacks------------------//

void ServerHacks() // Start ServerHacks
{
DWORD dwSrvrPtr=*(DWORD*)Serverpointer;
if(dwSrvrPtr!=0){

//Fifth Slot
{*(long*)(dwSrvrPtr+Slot5_OffSet) = 1;}

//Visual lvl 100
{*(long*)(dwSrvrPtr+Visual_100)=0x00FD4000;}

//Platinum Premium
{*(long*)(dwSrvrPtr+Premium_OffSet) = 4, 10;{
*(float*)(dwSrvrPtr+OFS_PREMIUM2) = 1, 1;}}

//Super Master
{*(int*)(dwSrvrPtr+Super_Master_OffSet) = 1;}

}} //End Server Hacks

//-------------All Player Hacks------------------//

void PlayerHacks() // Start PlayerHacks
{
DWORD dwPlayerPtr = *(DWORD*)Playerpointer;
if(dwPlayerPtr != 0){


//Speed Roll x2
{	if(GetAsyncKeyState(VK_NUMPAD8) &1<< 0xF){
*(float*)(SpeedRoll) = 2.0f;}}

//Speed Roll x3
{if(GetAsyncKeyState(VK_NUMPAD9) &1<< 0xF){
*(float*)(SpeedRoll) = 3.0f;}}

//Speed Roll Normal
{if(GetAsyncKeyState(VK_NUMPAD7) &1<< 0xF){
*(float*)(SpeedRoll) = 1.0f;}}

//Speed x2
{if(GetAsyncKeyState(VK_NUMPAD1) &1<< 0xF){
*(float*)(Speed) = 200.0f;}}

//Speed x3
{if(GetAsyncKeyState(VK_NUMPAD2) &1<< 0xF){
*(float*)(Speed) = 300.0f;}}

//Speed x5
{if(GetAsyncKeyState(VK_NUMPAD3) &1<< 0xF){
*(float*)(Speed) = 500.0f;}}

//Speed Normal
{if(GetAsyncKeyState(VK_NUMPAD0) &1<< 0xF){
*(float*)(Speed) = 100.0f;}}

//Superjump
{if(GetAsyncKeyState(VK_CONTROL) &1){
*(float*)(dwPlayerPtr+OFS_Z) = 1000;}}

//Unlimited Stamina
{*(float*)(dwPlayerPtr+Stamina_OffSet) = 100;}

//No Recoil
{*(float*)(dwPlayerPtr+OFS_NORECOIL1) = 0;
*(float*)(dwPlayerPtr+OFS_NORECOIL2) = 0;
*(float*)(dwPlayerPtr+OFS_NORECOIL3) = 0;}

//No Fall Damage
{*(float*)(dwPlayerPtr+NFD_Player_OffSet) = -20000;}

//No Spawn Wait
{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);}

//Teleport
{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;}}

//Fast All
{*(float*)Fast_Repair = 10.0f;
*(float*)Fast_Health = 5.0f;
*(float*)Fast_Flag = 10.0f;
*(float*)Fast_Ammo = 5.0f;}

//Full Bright
{*(int*)(Full_Bright_1) = 1092779973;
*(int*)(Full_Bright_2) = 1092779973;
*(int*)(Full_Bright_3) = 1092779973;}

//No Fog
{*(float*)GlassWalls_FarFog = 1166127104;
*(float*)Near_Fog = 0;}

//No Bounds
*(int*)(No_Bounds_1)=0;*(int*)(No_Bounds_2)=0;

//No Water
*(int*)(ADR_NOWATER)=0;

//Virtual Dig
{if(GetAsyncKeyState(VK_MENU) &1){
*(float*)(dwPlayerPtr+OFS_Z) = -2000;}}

//Extra Ammo A
{*(int*)(Extra_Ammo_1)   = 1;}

//Extra Ammo S
{*(int*)(Extra_Ammo_2)   = 1;}

//No Spread
{*(float*) No_Spread = 0;}

//Scope
{if(GetAsyncKeyState(VK_RBUTTON)){*(int*)(ADR_SCOPE) = 1;}

//Low Gravity
{if (GetAsyncKeyState(VK_MBUTTON)){
*(float*)(dwPlayerPtr+OFS_GRAV) = 100.0f;}}

}} //End PlayerHacks
Well, this was about it. When I know more of something I forgot or something than I'll add it.

Credits:

Legendary+taylan for making tutorial.
Zeas for descovering this methode.


Allowed to leech, GIVE CREDITS!

contact for questions :taylan-11@hotmail.de
Well god I hate warrock hacks, but I must admit this is a well put together tutorial even if it reaks of leech, and you did explain a lot of things in a leech-friendly way >_>....

BTW if your reading this lalakiljip if you want to know why people did that here's your explanation:
Code:
//Speed Normal
{if(GetAsyncKeyState(VK_NUMPAD0) &1<< 0xF){
*(float*)(Speed) = 100.0f;}}
See this guy does a bitwise and and then shifts the bit left 15 places... which is the same thing as just doing & 0x8000 ... which is the same thing as just doing nothing:
Code:
GetAsyncKeyState(VK_NUMPAD0);
So you see it comes from leacher trying to confuse them selves... >_>
thank a lot for this great comment
Quote Originally Posted by why06 View Post
Well god I hate warrock hacks, but I must admit this is a well put together tutorial even if it reaks of leech, and you did explain a lot of things in a leech-friendly way >_>....

BTW if your reading this lalakiljip if you want to know why people did that here's your explanation:
Code:
//Speed Normal
{if(GetAsyncKeyState(VK_NUMPAD0) &1<< 0xF){
*(float*)(Speed) = 100.0f;}}
See this guy does a bitwise and and then shifts the bit left 15 places... which is the same thing as just doing & 0x8000 ... which is the same thing as just doing nothing:
Code:
GetAsyncKeyState(VK_NUMPAD0);
So you see it comes from leacher trying to confuse them selves... >_>
GetAsyncKeyState Function ()
"If the most significant bit is set, the key is down"

1<<0xF creates a short bitmask: 1000000000000000 (16 bits(depends on OS btw)).

And ANDs that to the return. Everything other then the most significant bit is masked out. Then the return will be just vary on whether that one bit is set. Anything nonzero is 'true' in C++. Doing it without the bitmask works as well because the return is nonzero when the key is down. But the proper way to do it, is to AND it with a bitmask.

Soh to all those who said the poster failed by ANDing the return with a bitmask, right back at you. You shouldn't troll someone for following the standard because the return may change. And if it does, those who followed the standard are safe.


As far as the code goes, improper naming convention, unnecessary globals, why let macros replace constants? Unmodular design, functions take too many assumptions(especially for functions which aren't in a class or object.) fasdf, I keep seeing the same mistakes in all the code posted here :S.
Quote Originally Posted by why06 View Post
Well god I hate warrock hacks, but I must admit this is a well put together tutorial even if it reaks of leech, and you did explain a lot of things in a leech-friendly way >_>....

BTW if your reading this lalakiljip if you want to know why people did that here's your explanation:
Code:
//Speed Normal
{if(GetAsyncKeyState(VK_NUMPAD0) &1<< 0xF){
*(float*)(Speed) = 100.0f;}}
See this guy does a bitwise and and then shifts the bit left 15 places... which is the same thing as just doing & 0x8000 ... which is the same thing as just doing nothing:
Code:
GetAsyncKeyState(VK_NUMPAD0);
So you see it comes from leacher trying to confuse them selves... >_>
bahhaha /ownt
I hate it when the same old crap is posted over and over again by different people.
You don't know how to code, gtfo leecher!

Quote Originally Posted by leechfag
{if(GetAsyncKeyState(VK_NUMPAD0) &1<< 0xF){
Fail...
Damn, it would be nice if someone could show us how to find the addresses for those features instead. I'd seriously like to know how to find stuff like no recoil without using that "Search for text" feature on olly and just typing in "Recoil" or stuff like that ( I think there's something similar for CoD ). If there isn't, then I'm just stupid..

RAGE!
Quote Originally Posted by Void View Post
Damn, it would be nice if someone could show us how to find the addresses for those features instead. I'd seriously like to know how to find stuff like no recoil without using that "Search for text" feature on olly and just typing in "Recoil" or stuff like that ( I think there's something similar for CoD ). If there isn't, then I'm just stupid..

RAGE!
u need a bypasser first to let your cheat engine modify/search the addies then you have to have some knowledge of CE to find the address and its pointer and backtracing to its base address then put it in this code.the hard part is just to make a bypasser which needs a great knowledge/experience of ASM rest are easy.
thanks that is good
________________
to make hack that is not hard but u need to know how to get the codes
ill try this, and ill add credits.
Thanks I'm gunna make my own warrock hack now
Thansk for tut
OMG THIS STILL WORKS O.o for CAEU this is already fixed a long time ago.
maybe ill go back to Warrock (u got loggers for getting all addies =.= including opk for free.

free vip ftw.

but id rather search my own addies without a logger.
so easy at warrock u can even use CE if u want /./
Posts 1–13 of 13 · Page 1 of 1
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Need help?