Munad
Numero di messaggi : 48 Età : 34 Località : ESTATE
| Titolo: Come Creare LockMob Sab 13 Feb 2010, 22:50 | |
| Come creare lock Mob Strumenti:-CheatEngine -Dev-c++ -Metin2 -Computer ( XD ) TutorialDev-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() C++ Programming
- 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 C++ Programming
- 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: C++ Programming
- #include
- #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-EngineApriamo 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: ASM Programming
- 005f781d - push ecx
- 005f781e - mov ecx,[005f783c]
- 005f7824 - mov [esi+000003ac],ecx
- 005f782A - pop ecx
- 005f782B - jmp 004f1d05
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: C++ Programming
- 0x51,0x8b,0x0d,0x3c,0x78,0x5f,0x00,ecc..ecc..
Dev-c++Dichiariamo un array BYTE e all'interno scriviamoci i byte che avete copiato: Citazione:BYTE Lock[] = { 0x51,0x8b,0x0d,0x3c,0x78,0x5f,0x00,0x89,0x8e,0xac,0x03,0x00, 0x00,0x59,0xe9,0xd5,0xa4, 0xef, 0xff }; Cheat-EngineAndiamo all'address 004f1cff ( coordinate Y ) e scriviamo: ASM Programming
- 004f1cff - jmp 005f781d
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 C++ Programming
- 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: C++ Programming
- WriteProcessMemory(hProcess, (LPVOID)0x5f783c, &Y, sizeof(Y), NULL);
Con un altro writeprocessmemory scriviamo la nostra funzione asm sull'address 005F781D C++ Programming
- 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: C++ Programming
- WriteProcessMemory(hProcess, (LPVOID)0x4f1cff, &YJMP, sizeof(YJMP), NULL);
Ecco come dovrebbe essere ora il codice: C++ Programming
- #include
- #include
- #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! Fonte:Web | |
|