Ultima modifica:
Salve a tutti nabboli °-°
Oggi non ho niente da fare e mi va di spiegarvi come creare un cheat in C++.
Ci sono due modi per creare il cheat: con la Console o con una Dll; li vedremo tutti e due.
NOTA: la guida è rivolta per coloro che conoscono le basi di C++.
NOTA 2: se in questa guida speri di trovare degli address da utilizzare per un cheat.. Alt+F4 is the way
Primo metodo: Console
Create un nuovo progetto vuoto. IMPORTANTE: Aprire sempre il cheat come amministratore altrimenti non funzionerà!
Come prima cosa abbiamo bisogno di creare un Header, che nel mio caso chiamerò "functions.h" (poi potete decidere voi come chiamarlo però per questione di ordine conviene dare un nome sensato ai files e.e), e un file Cpp, che chiamerò "main.cpp" (come tradizione xD).
Cominciamo prima con "functions.h".
Ciò che andrà scritto su questo header, come si intuisce dal nome, sono gli includes (librerie senza le quali è impossibile creare un qualsiasi progetto) e le funzioni utili per creare un buon cheat.
Partiamo con lo scrivere gli includes:
E dato che useremo le stringhe si deve "dire" al programma che si utilizza il namespace "std":
Perfetto. Ora andremo a definire le funzioni necessarie a far funzionare bene in cheat:
Le due funzioni sono ProcessExists, che semplicemente verifica se un determinato processo è aperto, e GetProcID, che ottiene il Process Identifier (comunemente detto PID) per poter usare OpenProcess.
Con "functions.h" abbiamo finito e adesso andremo a scrivere sul main.cpp.
Innanzitutto bisogna includere "functions.h" per poter utilizzare le funzioni scritte prima:
Notare che per includere il file ho messo le virgolette "" invece dei segni <>.. Ciò sta a indicare che includerò nel file un Header presente nel progetto.
Anche qua bisogna dire che si usa "std":
Si scrive la funzione principale che sarà l'entry point del programma:
All'interno di quelle due graffe scriveremo il codice del programma.
Per dare un tocco di stile si può mettere un piccolo titolo al cheat ad esempio:
Poi dichiariamo le variabili contenenti il nome del processo (nel nostro caso di S4), gli address e i value delle varie funzioni (per la guida userò due soli funzioni, con dati inventati ovviamente)
Quei due "useHP" e "useSP" sono due variabili che si utilizzeranno ora per specificare se l'utente vorrà attivare la funzione:
Adesso utilizzeremo una delle due funzioni dichiarate in precedenza, ovvero ProcessExists, per aspettare che il processo di S4 venga aperto:
Ora si comincia a scrivere il vero e proprio cuore del cheat:
In questa fase il codice fa esattamente questo: ottiene il PID di S4, apre il processo S4Client.exe per poter scrivere al suo interno, se precedentemente l'utente ha scelto di attivare le funzioni scrive la memoria (modifica il valore dell'address), chiude l'handle di S4Client.exe.
In questo modo abbiamo creato un semplicissimo cheat No-Menu. Poi volendo uno può crearsi una base personalizzata in modo da semplificarsi il lavoro (come ho fatto io ) ma necessita di qualche conoscenza in più (forse più avanti deciderò di rilasciare la mia base).
Secondo metodo: Dll
Questo metodo è di gran lunga più corto rispetto all'altro anche se presenta le sue piccole difficoltà, ovvero bisogna abilitare la scrittura della memoria del processo e andare a modificare il valore di un address; può anche essere scomodo in quanto bisogna injectare la Dll nel processo desiderato e soprattutto, non si può scegliere direttamente quale funzione attivare poichè verranno "attivate" tutte.
Create un nuovo progetto Win32 -> Dll e checkare "Progetto vuoto" (io uso VisualStudio per cui non so come si faccia a creare un progetto Dll con DevC++ o altri Ide).
Per questo metodo useremo sempre un Header ("definitions.h") e un Cpp ("dllmain.cpp").
Scriveremo prima su "definitions.h", partendo dal definire prima gli includes, gli address e per finire la funzione per disabilitare la protezione del processo e modificare la memoria su:
Ora andremo a toccare "dllmain.cpp", cominciando con l'includere "definitions.h" e definire l'EntryPoint del programma:
All'interno delle graffe metteremo il codice del cheat vero e proprio:
Corto vero? Queste righe non fanno altro che verificare che la dll sia stata injectata correttamente e modificare la memoria con la funzione definita prima.
Come sempre con certe conoscenze ci si potrebbe semplificare ulteriormente la vita.. basta sperimentare
La guida è terminata.. spero di essere stato d'aiuto
Ricordare sempre di eseguire come amministratore i cheats Console!
P.S. Non sono espertissimo per cui se ho sbagliato qualcosa vi prego di correggermi
Oggi non ho niente da fare e mi va di spiegarvi come creare un cheat in C++.
Ci sono due modi per creare il cheat: con la Console o con una Dll; li vedremo tutti e due.
NOTA: la guida è rivolta per coloro che conoscono le basi di C++.
NOTA 2: se in questa guida speri di trovare degli address da utilizzare per un cheat.. Alt+F4 is the way
Primo metodo: Console
Create un nuovo progetto vuoto. IMPORTANTE: Aprire sempre il cheat come amministratore altrimenti non funzionerà!
Come prima cosa abbiamo bisogno di creare un Header, che nel mio caso chiamerò "functions.h" (poi potete decidere voi come chiamarlo però per questione di ordine conviene dare un nome sensato ai files e.e), e un file Cpp, che chiamerò "main.cpp" (come tradizione xD).
Cominciamo prima con "functions.h".
Ciò che andrà scritto su questo header, come si intuisce dal nome, sono gli includes (librerie senza le quali è impossibile creare un qualsiasi progetto) e le funzioni utili per creare un buon cheat.
Partiamo con lo scrivere gli includes:
Codice:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <string>
Codice:
using namespace std;
Codice:
BOOL ProcessExists(string ProcessName)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 PE32;
PE32.dwSize = sizeof(PROCESSENTRY32);
do
{
if(PE32.szExeFile == ProcessName)
{
CloseHandle(hSnapshot);
return TRUE;
}
} while(Process32Next(hSnapshot, &PE32));
CloseHandle(hSnapshot);
return FALSE;
}
DWORD GetProcID(string ProcessName)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 PE32;
PE32.dwSize = sizeof(PROCESSENTRY32);
while(Process32Next(hSnapshot, &PE32) && PE32.szExeFile != ProcessName);
return PE32.th32ProcessID;
}
Con "functions.h" abbiamo finito e adesso andremo a scrivere sul main.cpp.
Innanzitutto bisogna includere "functions.h" per poter utilizzare le funzioni scritte prima:
Codice:
#include "functions.h"
Anche qua bisogna dire che si usa "std":
Codice:
using namespace std;
Codice:
void main()
{
}
Per dare un tocco di stile si può mettere un piccolo titolo al cheat ad esempio:
Codice:
cout << "========================" << endl
<< "===Cheat by Steurendo===" << endl
<< "========================" << endl
<< endl;
Codice:
char *ProcessName = "S4Client.exe";
DWORD adrHP = 0x00A1B2C3,
valHP = 255,
useHP = FALSE,
adrSP = 0x00D4E5F6,
valSP = 255,
useSP = FALSE;
Codice:
cout << "200 HP: ";
cin >> useHP;
cout << "Inf SP";
cin >> useSP;
Codice:
cout << "Waiting for " << ProcessName << "..." << endl
<< endl;
while(!ProcessExists(ProcessName));
Codice:
cout << ProcessName << " found!" << endl
<< endl;
Sleep(1000);
DWORD PID = GetProcID(ProcessName);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
if(useHP)
WriteProcessMemory(hProcess, (LPVOID)adrHP, &valHP, sizeof(valHP), NULL);
if(useSP)
WriteProcessMemory(hProcess, (LPVOID)adrSP, &valSP, sizeof(valSP), NULL);
CloseHandle(hProcess);
cout << "Done!" << endl;
In questo modo abbiamo creato un semplicissimo cheat No-Menu. Poi volendo uno può crearsi una base personalizzata in modo da semplificarsi il lavoro (come ho fatto io ) ma necessita di qualche conoscenza in più (forse più avanti deciderò di rilasciare la mia base).
Secondo metodo: Dll
Questo metodo è di gran lunga più corto rispetto all'altro anche se presenta le sue piccole difficoltà, ovvero bisogna abilitare la scrittura della memoria del processo e andare a modificare il valore di un address; può anche essere scomodo in quanto bisogna injectare la Dll nel processo desiderato e soprattutto, non si può scegliere direttamente quale funzione attivare poichè verranno "attivate" tutte.
Create un nuovo progetto Win32 -> Dll e checkare "Progetto vuoto" (io uso VisualStudio per cui non so come si faccia a creare un progetto Dll con DevC++ o altri Ide).
Per questo metodo useremo sempre un Header ("definitions.h") e un Cpp ("dllmain.cpp").
Scriveremo prima su "definitions.h", partendo dal definire prima gli includes, gli address e per finire la funzione per disabilitare la protezione del processo e modificare la memoria su:
Codice:
#include <Windows.h>
#define ADR_HP 0x00A1B2C3
#define ADR_SP 0x00D4E5F6
void WriteMemory(DWORD address, DWORD value)
{
DWORD dwOldProt;
VirtualProtect((LPVOID)address, 4, PAGE_READWRITE, &dwOldProt);
*(DWORD *)address = value;
VirtualProtect((LPVOID)address, 4, dwOldProt, &dwOldProt);
}
Codice:
#include "definitions.h"
int __stdcall DllMain(HMODULE hModule, DWORD dwReasons, LPVOID lpReserved)
{
}
Codice:
if(dwReasons == DLL_PROCESS_ATTACH)
{
WriteMemory(ADR_HP, 123456789);
WriteMemory(ADR_SP, 987654321);
}
Come sempre con certe conoscenze ci si potrebbe semplificare ulteriormente la vita.. basta sperimentare
La guida è terminata.. spero di essere stato d'aiuto
Ricordare sempre di eseguire come amministratore i cheats Console!
P.S. Non sono espertissimo per cui se ho sbagliato qualcosa vi prego di correggermi