•What do i need to learn in order to be able to code hacks?
- C++ (It sure covers a huge part in coding hacks so by learning this you're closer to achieving making your own hacks)
- Assembly (Will help you understand Pointers and Offsets better
- How to use IDA Pro & Olly Debug (These are the most common used debuggers in order to unpack cshell or search functions for the game)
- Direct X (DirectX will be useful to you if you are planning to make a menu hack or functions like Wallhack / Chamms )
♦I want to get started but i dont know from where to start!
-Since you are a beginner , and dont know how to make your own base and stuff you can learn much from Bases that are public released.
Although , most of them (Or better all of them since they are all basically the same ( @Swiftdude 's base) will be patched or are already patched)
In that case , you must understand the way the whole thing is working so that you can make your own one.
Useful Things & Information
•Unpacking CShell.dll (Directory : C:/Program Files / Crossfirefg)
- In cshell.dll you can find many useful things. Some of them are Pointers & Offsets for the functions that you will use in your hack.
Public Base to learn from
♦This base is detected , but you can learn from it in many ways.You can try making it undetected on your own
Code:
#include<windows.h>
#define WeaponMgr 0xA0F338 // Weapon Pointer , Outdated
#define NoReload 0x2420 // Our No Reload function offset
DWORD WINAPI Hacks(LPVOID)
{
bool reload = false; // Make it true; if you want it to be auto on
while(1)
{
DWORD CShell = (DWORD)GetModuleHandleA("CShell.dll");
DWORD pWeaponMgr = *(DWORD*)(CShell + WeaponMgr);
if(reload)
{
if (pWeaponMgr)
{
for(int i=0; i<445; i++) // Weapon Loop. 445 = the number of the weapons
{
if((*(DWORD*)((*(DWORD*)(CShell+WeaponMgr))+(4*i))) != NULL)
*(float*)((*(DWORD*)((*(DWORD*)(CShell+WeaponMgr))+(4*i))) + NoReload) = 100; // 100 is the value for no reload
}
}
}
Sleep(100);
}
}
bool Ready2Hook()
{
if(GetModuleHandleA("CShell.dll") != NULL
&& GetModuleHandleA("ClientFx.fxd") != NULL)
return 1;
return 0;
}
DWORD WINAPI Wait(LPVOID)
{
while(!Ready2Hook()) Sleep(200);
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)Hacks, NULL, NULL, NULL);
return 0;
}
BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
{
DisableThreadLibraryCalls(hDll);
if ( dwReason == DLL_PROCESS_ATTACH )
{
//================================== OPTIONAL =========================================\\
MessageBoxA(0, "Message Test","Message Title", 0);
system("start [You must be registered and logged in to see this link.]
\\====================================================================================//
CreateThread(0,0,(LPTHREAD_START_ROUTINE)Wait,0,0,0);
}
return 1;
}
String names of the most common functions
Code:
ReloadAnimRatio - Weapon Reload (No Reload)
ChangeWeaponAnimRatio - Weapon change delay (No weapon change delay)
AmmoDamage - Weapon Damage (One hit kill)
LowerAnimRate - Weapon Recoil (Less Recoil not full No Recoil)
CharacterHiddenAlpha - See Ghost
CharacterHiddenWalkAlpha - See Ghost
CharacterHiddenRunAlpha - See Ghost
MovementHiddenRate - See Ghost
C4PlantTime - Obviously C4 Plant time
C4DefuseTime - Obviously C4 Defuse time
MaxCanDefuseDistance - Distance that you can defuse the bomb
Range -Weapon Range
ShotsPerAmmo - Shotgun Spread
EdgeShotEnabled - Shoot Through Wall
WallShotEnabled - Shoot Through Wall
PerfectWallShotEnabled - Shoot Through Wall
More coming soon ...
Useful Stuff / Base Tutorial
•How to make your own base ?
- Thanks to @Brimir you can learn from his tutorial so that it will be easier to start with making your own base.
(It maybe is detected or patched , i dont know but still its a great tutorial to learn from)
-How to make a base
NOTE : Things you have to know before reading his tutorial (To understand it easier)
- How to use Classes
- What Classes are
Making some of the Common features
♦Making No Reload
Code:
/* First define No Reload's Offset & Weapon Pointer */
#define WeaponPointer 0x000000 (You have to find the Pointer)
#define NoReload 0x0000 (You have to find the Offset)
/*If you want to make your hack Auto On put this before it */
bool noreload = true; // Dont make it the same name with the defined one.
/* Then add these */
DWORD CShell = (DWORD)GetModuleHandleA("CShell.dll"); // When CShell word will be used , it will understand it is CShell.dll
DWORD pWeaponMgr = *(DWORD*)(CShell + WeaponPointer); // Wehn pWeaponMgr word will be used , it will understand that it is CShell with Weapon Pointer
/* Then add this */
if(noreload)
{
if (pWeaponMgr) // Look above if you dont remember what it is ;p
{
for(int i=0; i<445; i++) // Weapon Loop. 445 = the number of the weapons
{
if((*(DWORD*)((*(DWORD*)(CShell+WeaponMgr))+(4*i))) != NULL)
*(float*)((*(DWORD*)((*(DWORD*)(CShell+WeaponMgr))+(4*i))) + NoReload) = 100; // 100 is the value for no reload
}
}
}
/* You are done. Add this to your base or you can simply make it on your own way */
•Making No Weapon change delay
Code:
/* First define No Weapon Change Delay's Offset & Weapon Pointer */
#define WeaponPointer 0x000000 (You have to find the Pointer)
#define WeaponChangeDelay 0x0000 (You have to find the Offset)
/*If you want to make your hack Auto On put this before it */
bool nochange = true; // Dont make it the same name with the defined one.
/* Then add these */
DWORD CShell = (DWORD)GetModuleHandleA("CShell.dll"); // When CShell word will be used , it will understand it is CShell.dll
DWORD pWeaponMgr = *(DWORD*)(CShell + WeaponPointer); // Wehn pWeaponMgr word will be used , it will understand that it is CShell with Weapon Pointer
/* Then add this */
if(nochange)
{
if (pWeaponMgr) // You already know what this is
{
for(int i=0; i<445; i++) // You already know what this is
{
if((*(DWORD*)((*(DWORD*)(CShell+pWeaponMgr))+(4*i))) != NULL)
*(float*)((*(DWORD*)((*(DWORD*)(CShell+pWeaponMgr))+(4*i))) + WeaponChangeDelay) = 100; // You already know what this is
}
}
}
/* You are done. Add this to your base or you can simply make it on your own way */
♦This is the end of the tutorial , i didnt have much time making it better ( Still , i think its good ).If you follow this tutorial , im sure that you will become a great Coder ( General )
More Coming soon ..
♦Credits:
DaChosen
- C++ (It sure covers a huge part in coding hacks so by learning this you're closer to achieving making your own hacks)
- Assembly (Will help you understand Pointers and Offsets better
- How to use IDA Pro & Olly Debug (These are the most common used debuggers in order to unpack cshell or search functions for the game)
- Direct X (DirectX will be useful to you if you are planning to make a menu hack or functions like Wallhack / Chamms )
♦I want to get started but i dont know from where to start!
-Since you are a beginner , and dont know how to make your own base and stuff you can learn much from Bases that are public released.
Although , most of them (Or better all of them since they are all basically the same ( @Swiftdude 's base) will be patched or are already patched)
In that case , you must understand the way the whole thing is working so that you can make your own one.
Useful Things & Information
•Unpacking CShell.dll (Directory : C:/Program Files / Crossfirefg)
- In cshell.dll you can find many useful things. Some of them are Pointers & Offsets for the functions that you will use in your hack.
Public Base to learn from
♦This base is detected , but you can learn from it in many ways.You can try making it undetected on your own
Code:
#include<windows.h>
#define WeaponMgr 0xA0F338 // Weapon Pointer , Outdated
#define NoReload 0x2420 // Our No Reload function offset
DWORD WINAPI Hacks(LPVOID)
{
bool reload = false; // Make it true; if you want it to be auto on
while(1)
{
DWORD CShell = (DWORD)GetModuleHandleA("CShell.dll");
DWORD pWeaponMgr = *(DWORD*)(CShell + WeaponMgr);
if(reload)
{
if (pWeaponMgr)
{
for(int i=0; i<445; i++) // Weapon Loop. 445 = the number of the weapons
{
if((*(DWORD*)((*(DWORD*)(CShell+WeaponMgr))+(4*i))) != NULL)
*(float*)((*(DWORD*)((*(DWORD*)(CShell+WeaponMgr))+(4*i))) + NoReload) = 100; // 100 is the value for no reload
}
}
}
Sleep(100);
}
}
bool Ready2Hook()
{
if(GetModuleHandleA("CShell.dll") != NULL
&& GetModuleHandleA("ClientFx.fxd") != NULL)
return 1;
return 0;
}
DWORD WINAPI Wait(LPVOID)
{
while(!Ready2Hook()) Sleep(200);
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)Hacks, NULL, NULL, NULL);
return 0;
}
BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
{
DisableThreadLibraryCalls(hDll);
if ( dwReason == DLL_PROCESS_ATTACH )
{
//================================== OPTIONAL =========================================\\
MessageBoxA(0, "Message Test","Message Title", 0);
system("start [You must be registered and logged in to see this link.]
\\====================================================================================//
CreateThread(0,0,(LPTHREAD_START_ROUTINE)Wait,0,0,0);
}
return 1;
}
String names of the most common functions
Code:
ReloadAnimRatio - Weapon Reload (No Reload)
ChangeWeaponAnimRatio - Weapon change delay (No weapon change delay)
AmmoDamage - Weapon Damage (One hit kill)
LowerAnimRate - Weapon Recoil (Less Recoil not full No Recoil)
CharacterHiddenAlpha - See Ghost
CharacterHiddenWalkAlpha - See Ghost
CharacterHiddenRunAlpha - See Ghost
MovementHiddenRate - See Ghost
C4PlantTime - Obviously C4 Plant time
C4DefuseTime - Obviously C4 Defuse time
MaxCanDefuseDistance - Distance that you can defuse the bomb
Range -Weapon Range
ShotsPerAmmo - Shotgun Spread
EdgeShotEnabled - Shoot Through Wall
WallShotEnabled - Shoot Through Wall
PerfectWallShotEnabled - Shoot Through Wall
More coming soon ...
Useful Stuff / Base Tutorial
•How to make your own base ?
- Thanks to @Brimir you can learn from his tutorial so that it will be easier to start with making your own base.
(It maybe is detected or patched , i dont know but still its a great tutorial to learn from)
-How to make a base
NOTE : Things you have to know before reading his tutorial (To understand it easier)
- How to use Classes
- What Classes are
Making some of the Common features
♦Making No Reload
Code:
/* First define No Reload's Offset & Weapon Pointer */
#define WeaponPointer 0x000000 (You have to find the Pointer)
#define NoReload 0x0000 (You have to find the Offset)
/*If you want to make your hack Auto On put this before it */
bool noreload = true; // Dont make it the same name with the defined one.
/* Then add these */
DWORD CShell = (DWORD)GetModuleHandleA("CShell.dll"); // When CShell word will be used , it will understand it is CShell.dll
DWORD pWeaponMgr = *(DWORD*)(CShell + WeaponPointer); // Wehn pWeaponMgr word will be used , it will understand that it is CShell with Weapon Pointer
/* Then add this */
if(noreload)
{
if (pWeaponMgr) // Look above if you dont remember what it is ;p
{
for(int i=0; i<445; i++) // Weapon Loop. 445 = the number of the weapons
{
if((*(DWORD*)((*(DWORD*)(CShell+WeaponMgr))+(4*i))) != NULL)
*(float*)((*(DWORD*)((*(DWORD*)(CShell+WeaponMgr))+(4*i))) + NoReload) = 100; // 100 is the value for no reload
}
}
}
/* You are done. Add this to your base or you can simply make it on your own way */
•Making No Weapon change delay
Code:
/* First define No Weapon Change Delay's Offset & Weapon Pointer */
#define WeaponPointer 0x000000 (You have to find the Pointer)
#define WeaponChangeDelay 0x0000 (You have to find the Offset)
/*If you want to make your hack Auto On put this before it */
bool nochange = true; // Dont make it the same name with the defined one.
/* Then add these */
DWORD CShell = (DWORD)GetModuleHandleA("CShell.dll"); // When CShell word will be used , it will understand it is CShell.dll
DWORD pWeaponMgr = *(DWORD*)(CShell + WeaponPointer); // Wehn pWeaponMgr word will be used , it will understand that it is CShell with Weapon Pointer
/* Then add this */
if(nochange)
{
if (pWeaponMgr) // You already know what this is
{
for(int i=0; i<445; i++) // You already know what this is
{
if((*(DWORD*)((*(DWORD*)(CShell+pWeaponMgr))+(4*i))) != NULL)
*(float*)((*(DWORD*)((*(DWORD*)(CShell+pWeaponMgr))+(4*i))) + WeaponChangeDelay) = 100; // You already know what this is
}
}
}
/* You are done. Add this to your base or you can simply make it on your own way */
♦This is the end of the tutorial , i didnt have much time making it better ( Still , i think its good ).If you follow this tutorial , im sure that you will become a great Coder ( General )
More Coming soon ..
♦Credits:
DaChosen