Ciao a tutti oggi guida super speedy per far notare una cosa ai programmatori di hack alle prime armi.
Di solito la struttura di una mini hack nomenu assomiglia questa giusto?
C++ Programming
void HackThread()
{
while(true)
{
if(*out_game)
{
// hacks con serverpointer
Slot5();
}
if(*in_game)
{
//hacks con playerpointer
Stamina();
NoRecoil();
NoSpread();
}
Sleep(200);
}
}
BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
{
DisableThreadLibraryCalls(hDll);
if (dwReason == DLL_PROCESS_ATTACH) {
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)HackThread, NULL, NULL, NULL);
}
return TRUE;
}
bene, sarebbe anche giusta, se non fosse che
con molta probabilità vedremo che norecoil e nospread non funzionano!
eppure controllando gli address sono giusti... controllando le 2 funzioni sono giuste... le chiamiamo nel loop principale... quindi dove sta l'inghippo???
Semplice
il problema sta nello Sleep(200)!
o meglio, nel 200
spieghiamo come funzionano NoRecoil e NoSpread...
funzionano che ci sono delle variabili in memoria che contengono lo "scostamento" dell'arma dalla posizione centrale e lo scostamento del proiettile sparato rispetto al punto mirato. Bene, noi con la nostra hack le TENIAMO FISSE a 0 in modo che l'arma risulti ferma e il proiettile non si scosti dall'obbiettivo rendendo preciso il tiro.
Bene, il fatto è che mentre noi le teniamo a 0 il codice di warrock le tiene ad un altro valore,
allora l'efficacia della hack è tanto alta quando velocemente riusciamo a riportare a 0 questo valore...
Beh, con uno sleep di 200 di fatto ci fermiamo per un sacco di tempo rispetto alla velocità con cui warrock sovrascrive questi valori , rendendo di fatto inutile la nosta hack su queste variabili.
La soluzione piu immediata sarebbe abbassare lo Sleep a 50 o meno, 25 o addirittura a 0!
Il problema poi è che se chi gioca con la hack ha un pc non troppo performante noterà un lagging pazzesco addirittura al punto magari di non poter giocare, soprattutto se la nostra hack conterrà mooolte funzioni in piu di questo semplice esempio.
Allora che si fa?
Semplice,
separiamo le funzioni creando 2 threads separati!
Thread 1 superveloce -> NoRecoil e NoSpread
Thread 2 normale -> tutte le altre funzioni
quindi il nostro source diventerà una cosa tipo questa:
C++ Programming
void HackThread_Slow()
{
while(true)
{
if(*out_game)
{
// hacks con serverpointer
Slot5();
}
if(*in_game)
{
//hacks con playerpointer
Stamina();
}
Sleep(200);
}
}
void HackThread_Fast()
{
while(true)
{
if(*in_game)
{
//hacks con playerpointer
NoRecoil();
NoSpread();
}
Sleep(25);
}
}
BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
{
DisableThreadLibraryCalls(hDll);
if (dwReason == DLL_PROCESS_ATTACH) {
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)HackThread_Slow, NULL, NULL, NULL);
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)HackThread_Fast, NULL, NULL, NULL);
}
return TRUE;
}
se avete dubbi chiedete
ciao
Digger