Guida [GUIDA - C++]Creare LockMob

Stato
Discussione chiusa ad ulteriori risposte.

_Ezi

Utente Silver
15 Ottobre 2009
13
3
0
60
Ultima modifica da un moderatore:
Come creare lock Mob

Strumenti:
-CheatEngine
-Dev-c++
-Metin2
-Computer ( XD )
Tutorial
Dev-c++
Iniziamo!
Per prima cosa apriamo dev-c++e clicchiamo su file > nuovo > file sorgente
-Includiamo Windows.h
-definiamo la costante pointer con valore 0x005F29BC
-Dichiariamo 1 variabil DWORD che servirà per scrivere su un address libero le nostre coordinate attuali
-Dichiari8amo una variabile HANDLE che sarà uguale a processo()
-Scriviamo la funzione Processo()




Codice:
HANDLE Processo()
{
    HWND hwnd;
    hwnd = FindWindow(0, "METIN2");

    DWORD proc_id;
    GetWindowThreadProcessId(hwnd, &proc_id);
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);  
    return hProcess;
}
-Scriviamo la funzione GetAdd() che ci server per trovare il baseaddress della coordinata Y

Codice:
unsigned long GetAdd(int x,int y)
{
    int buffer[3];
    int address[2];
ReadProcessMemory(Processo(),(LPVOID)pointer,&buffer[0],sizeof(buffer[0]),NULL);
address[0] = buffer[0] + x;
ReadProcessMemory(Processo(),(LPVOID)address[0],&buffer[1],sizeof(buffer[1]),NULL);
address[1] = buffer[1] + y;
ReadProcessMemory(Processo(),(LPVOID)address[1],&buffer[2],sizeof(buffer[2]),NULL);
return buffer[2];
}
Ora che abbiamo scritto tutto dovremmo avere un codice simile a questo:

Codice:
#include <windows.h>
#define pointer 0x005F29BC
unsigned long GetAdd(int x,int y);
HANDLE Processo();
int main()
{
DWORD Y = GetAdd(16,1416) // 16 e 1416 sono i 2 offset che servono per tovare Y
HANDLE hProcess = Processo();
}

HANDLE Processo()
{
    HWND hwnd;
    hwnd = FindWindow(0, "METIN2");

    DWORD proc_id;
    GetWindowThreadProcessId(hwnd, &proc_id);
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);  
    return hProcess;
}



unsigned long GetAdd(int x,int y)
{
    int buffer[3];
    int address[2];
ReadProcessMemory(Processo(),(LPVOID)pointer,&buffer[0],sizeof(buffer[0]),NULL);
address[0] = buffer[0] + x;
ReadProcessMemory(Processo(),(LPVOID)address[0],&buffer[1],sizeof(buffer[1]),NULL);
address[1] = buffer[1] + y;
ReadProcessMemory(Processo(),(LPVOID)address[1],&buffer[2],sizeof(buffer[2]),NULL);


return buffer[2];
}
Cheat-Engine
Apriamo CE selezionamo il processo metin2.bin e clicchiamo su memory view!
Andiamo all'address:
005f781d che sarà l'address dove scriveremo la nostra funzione asm
e scriviamo:

Codice:
005f781d - push ecx
005f781e - mov ecx,[005f783c]
005f7824 - mov [esi+000003ac],ecx
005f782A - pop ecx
005f782B - jmp 004f1d05
Immagine:

219dulv.jpg


Ora aprite il blocco note e copiate tutti i bytes ( segnati in verde) aggiungendo davanti 0x (in c++ indica un numero esadecimale) e separandoli con una virgola..
in questo modo:
Codice:
0x51,0x8b,0x0d,0x3c,0x78,0x5f,0x00,ecc..ecc..
Dev-c++
Dichiariamo un array BYTE e all'interno scriviamoci i byte che avete copiato:

Codice:
BYTE Lock[] = { 0x51,0x8b,0x0d,0x3c,0x78,0x5f,0x00,0x89,0x8e,0xac,0x03,0x00,
0x00,0x59,0xe9,0xd5,0xa4, 0xef, 0xff };

Cheat-Engine

Andiamo all'address
004f1cff ( coordinate Y )
e scriviamo:

Codice:
004f1cff - jmp 005f781d
2dw989l.jpg

Dev-c++
Copiate tutti i byte (segnati in verde e compreso il nop [0x90]) e dichiariamo un altro array BYTE dove scriveremo i byte che abbiamo copiato

Codice:
BYTE YJMP[] = {0xe9,0x19,0x5b,0x10,0x00,0x90};
Ora possiamo scrivere il lockMob sull'asse Y!

Scriviamo le nostre coordinate attualli sull'address 005f783c utilizzando writeprocessmemory:

Codice:
WriteProcessMemory(hProcess, (LPVOID)0x5f783c, &Y, sizeof(Y), NULL);
Con un altro writeprocessmemory scriviamo la nostra funzione asm sull'address 005F781D

Codice:
WriteProcessMemory(hProcess, (LPVOID)0x5F781D, &Lock, sizeof(Lock), NULL);
e infine scriviamo sull'address 004f1cff il jmp per fare in modo che venga eseguita la nostra funzione asm:

Codice:
WriteProcessMemory(hProcess, (LPVOID)0x4f1cff, &YJMP, sizeof(YJMP), NULL);
Ecco come dovrebbe essere ora il codice:


Codice:
#include <windows.h>
#include <iostream.h> 
#define pointer 0x005F29BC

unsigned long GetAdd(int x,int y);
HANDLE Processo();
int main()
{

DWORD Y = GetAdd(16,1416);
HANDLE hProcess = Processo();


BYTE Lock[] = {0x51, 0x8b,0x0d,0x3c,0x78,0x5f,0x00,0x89,0x8e,0xac,0x03,0x00,0x00,0x59,0xe9,0xd5,0xa4,0xef,0xff};
BYTE YJMP[] = {0xe9,0x19,0x5b,0x10,0x00,0x90};
WriteProcessMemory(hProcess, (LPVOID)0x5f783c, &Y, sizeof(Y), NULL);
WriteProcessMemory(hProcess, (LPVOID)0x5F781D, &Lock, sizeof(Lock), NULL);
WriteProcessMemory(hProcess, (LPVOID)0x4f1cff, &YJMP, sizeof(YJMP), NULL);

}

HANDLE Processo()
{
    HWND hwnd;
    hwnd = FindWindow(0, "METIN2");

    DWORD proc_id;
    GetWindowThreadProcessId(hwnd, &proc_id);
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);  
    return hProcess;
}

unsigned long GetAdd(int x,int y)
{
    int buffer[3];
    int address[2];
ReadProcessMemory(Processo(),(LPVOID)pointer,&buffer[0],sizeof(buffer[0]),NULL);
address[0] = buffer[0] + x;
ReadProcessMemory(Processo(),(LPVOID)address[0],&buffer[1],sizeof(buffer[1]),NULL);
address[1] = buffer[1] + y;
ReadProcessMemory(Processo(),(LPVOID)address[1],&buffer[2],sizeof(buffer[2]),NULL);


return buffer[2];
}
Ora rifate lo stesso procedimento con X e Z compilate e avrete scritto il LockMob!

Rigraziamenti: Sthep
Credits: Unfair-Gamers
Fonte: Unfair-Gamers
 
Ultima modifica:
Ottima però, metti i credit a unfari games senza link, e in caso vorreste contrabbatere ecco qui

4.1 L'inserimento di url esterni nei messaggi è consentito solo ed esclusivamente se richiesto nel completamento del messaggio stesso.
Evitare discussioni atte a promuovere siti esterni
 
sposto in programmazione , ho editato i link inquanto non si possono fare riferimenti a siti esterni , ho lasciato citato solo il nome.

ottimo lavoro ezi
 
Ultima modifica:
Asd la stessa guida che hai messo su unfair-gamers
cmq bella guida meriti un +1
meriti rilievo
 
  • Mi piace
Reazioni: Eyedema
Ultima modifica:
ho kapito ora :asd: e comunque gioko a metin da 2 anni
edit: nn ho kapito =| :omfg:
 
Ultima modifica:
no da qnd avevo 11 anni asd;
cmq kosa è un kode kave?
 
Stato
Discussione chiusa ad ulteriori risposte.