 |
-
Member
User ID: 9850
Status: Offline
Data Registrazione : Jul 2009
Messaggi : 65
Thanks : 0
- Thanked 3 Times in 2 Posts
[TUTORIAL] Creare LockMobs Metin2
In questa guida spiegherò come creare un lock mob, con tanto di immagini...
Cercherò di essere breve.
Il lock mob sicuramente è stato scoperto la prima volta con l'intenzione di creare un teleporter hack modificando il game code... Il processo per trovarlo è alquanto semplice.
1- Troviamo le coordinate X, Y e Z.
2- click destro sulla X a facciamo Find What Write.... e mettiamo su disassemble. Bene adesso avremo l'istruzione mov[esi+3a8], eax... eax corrisponde al valore attuale della X, nel registro eax viene copiato senza sosta di alcun timer il value della coordinata X in ogni minimo momento... In modo tale da aggiornare il movimento del nostro personaggio... Però se noi lo modificassimo nelle nostre attuali coordinate e lo lasciassimo sempre così? XD vi ritroverete a muovervi solo sulla stessa linea, in quanto potrete muovervi solo sull'asse delle y e su quello delle Z. Ma non solo... anche i mob si troveranno sul vostro stesso asse....
Per fare un lock mob abbiamo capito che non dobbiamo fare altro che far si che la variabile copiata costantemente in eax non si aggiorni, ma rimanga ferma dove siamo... Per far ciò non basta freezzare l'address, in quanto il timer di CE non è costante, ma ha il tick ogni 250 millesecondi, per cui nel contempo eax ha il tempo di aggiornarsi e di conseguenza la posizione dei Mob...
Bene bene bene... non ci resta che fare una funzione nostra dove metteremo:
Codice:
push eax ;inseriamo eax nello stack
mov eax, [005f77e1] ;copiamo l'opcode dell'address 005f77e1 in eax
mov [esi+3a8], eax ;copiamo eax (= a opcode di address 005f77e1) in esi+3a8, ovvero il registro che regolas la posizione sull'asse delle X
pop eax; togliamo eax dallo stack
jmp 004f161c ;ritorniamo all'address successivo alla chiamata della funzione da noi personalizzata
Non sapevo come spiegarlo meglio, ma detto così non ha senso... cosa ci sarà mai nell'opcode di 005f77e1? Semplice, il suo opcode corrisponde al value dell'address X trasformato da float in Hex e convertito col metodo Rev hexa chain... Avete capito bene adesso... Praticamente eseguiamo un ReadProcessMemory sull'address dinamico della X e convertiamo il buffer float o 4 bytes in Hex con la funzione Hex("buffer in dec")... Bene adesso a trasformarlo nel metodo rev hexa chain ci penserà lo stack che funziona col metodo LIFO (last in first out)... Ovvero non dobbiamo fare altro che usare WriteProcessMemory e scriviamo su 005f77e1 l'hex del value della X.
Facciamo un esempio: se il value di X è di
471f45df , una volta scritto in 005f77e1 (un address libero qualsiasi), con size 4 bytes, diventerà (per il funzionamento LIFO) in df 45 1f 47. E voi noterete che andrà a finire sotto l'address 005f77e1 perchè occupa troppo, ma non vi preoccupate state facendo la cosa giusta....
Ora df df 45 1f 47 sarà scritto nell eax di mov[esi+3a8], eax, e viene spontaneo pensare: " ma il value giusto era 471f45df, adesso mi crasherà"....
magia..... proprio grazie al metodo LIFO dello stack riconvertiremo df 45 1f 47 in 471f45df... Ed ecco come....
dirigiamoci sull'address 005f77cf e copiate
Codice:
//dobbiamo riconvertire df 45 1f 47 precedentemente scritto col writeprocessmemory nell'orginale 471f45df per far si che venga scritto nell'eax in sostitzione del precedente sulla X.
push eax ;mettiamo eax nello stack (lo scopo è di riconvertire il value della X presente in 005f77e1, convertito automaticamente in Rev hexa chain per via della scrittura (che corrisponde alle attuali coordinate) )
mov eax, [005f77e1]; e qui viene il bello: l'ultimo byte ad entrare (proprio perchè stiamo dentro lo stack con la chiamata push, sarà l'ultimo a uscire)
esaminiamo :
005f77e1 è uguale a df 45 1f 47
il primo ad entrare in Eax (per via del push) sarà df, poi 45, poi 1f, poi 47----> ad uscire saranno 47,1f,45,df che ricomponendolo su 4 bytes verrà fuori 471f45df (scacco matto!!! proprio il dato da sostituire al vecchio eax in mov[esi+3a8], eax
mov [esi+3a8], eax ; copiamo in eax il value (dopo averlo convertito nello stack in 471f45df
mov [esi+3a8], eax ; eax sarà uguale a 471f45df
pop eax ; dopo aver fatto la delicatissima conversione sfruttando il modo LIFO dello stack, adesso dello stack non ce ne frega più una minkia e preleviamo eax dallo stack con pop eax
jmp jmp 004f161c; torniamo all'address successivo allo jmp che metteremo in seguito da 004f1616.
Dirigiamoci su 004f1616 e mettiamo che è dove abbiamo "corrotto" il nostro eax. Adesso torniamo in game e se è tutto giusto vedrete i Mob muoversi solo sull'asse delle Y e della Z, la X è già lockata
Adesso visto che io non sono bravo a spiegare non si sarà capita una mazza e vi posto li screen:
FUNZIONE CREATA DA NOI
SALTO DALL'ISTRUZIONE BASE ALLA NOSTRA FUNZIONE
Per disattivare il lock vi basterà cambiare l'address 004f1616 da jmp 005f77cf a mov [esi+3a8], eax
Adesso (anche se è stata na faticaccia della madoska) non è finita, dovrete trovare la Y e fare la stessa cosa, stavolta con ECX, la Y al posto del registro eax userà ECX e vi ritroverete il lock mob così come appare nei MH 4.5 e 5.0.. ma ancora si può migliorare.. allos tato attuale avrete i mob sulle stesse vostre coordinate, ma si potranno incolonnare sopra la vostra testa mettendosi uno sopra l'altro... Bene per averli all'altezza pavimento sarà necessario fare la stessa cosa con l'asse della Z che usa il registro EDX.... Ora facendo l'esempio con la X e il registro EAX avete tutte le carte in regola per farlo anche con le altre due.....
Per disattivare la Y così come la X dovrete mettere mov [esi+3ac], ecx
e per la Z mov [esi+3b0], edx....
Adesso io sono nabbo in asm e non sono tantomeno un professore per cui è ovvio che ho spiegato a caxxo, ma vi basterà guardare i due screeen...
Si ringrazia Gex001
-
-
Senior Member
User ID: 2699
Status: Offline
Data Registrazione : Jun 2008
Messaggi : 1.124
Thanks : 0
- Thanked 0 Times in 0 Posts
RE: Creare LockMobs Metin2
Bella guida, già letta comunque xD
Edito titolo
-
Discussioni Simili
-
By spartacchio in forum C / C++ / C#
Risposte: 24
Ultimo Messaggio: 08-01-2009, 09:16 PM
-
By steppone in forum C / C++ / C#
Risposte: 21
Ultimo Messaggio: 27-12-2008, 07:01 PM
-
By XManu70 in forum Graphic Tutorials
Risposte: 10
Ultimo Messaggio: 23-07-2008, 12:58 PM
-
By steppone in forum Graphic Tutorials
Risposte: 9
Ultimo Messaggio: 10-07-2008, 04:48 PM
-
By TheClashDeDo in forum Visual Basic
Risposte: 15
Ultimo Messaggio: 22-06-2008, 02:38 PM
Regole di Scrittura
- Tu non puoi inviare nuove discussioni
- Tu non puoi inviare risposte
- Tu non puoi inviare allegati
- Tu non puoi modificare i tuoi messaggi
Regole del Forum
|
 |
Segnalibri