ItalianCheats Zone - Powered by vBulletin
+ Rispondi alla Discussione
Visualizzazione risultati da 1 a 2 di 2
  1. #1
    Member
    User ID: 9850
    Status: Offline
    Data Registrazione : Jul 2009
    Messaggi : 65
    Thanks : 0
    Thanked 3 Times in 2 Posts
    xXStephXx is on a distinguished road

    [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
    Codice:
    jmp 005f77cf
    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



     Click to show spoiler




    SALTO DALL'ISTRUZIONE BASE ALLA NOSTRA FUNZIONE


     Click to show spoiler











    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

  2. #2
    Senior Member
    User ID: 2699
    Status: Offline
    Data Registrazione : Jun 2008
    Messaggi : 1.124
    Thanks : 0
    Thanked 0 Times in 0 Posts
    FeliX is on a distinguished road

    RE: Creare LockMobs Metin2

    Bella guida, già letta comunque xD
    Edito titolo

Discussioni Simili

  1. [TUTORIAL]CREARE TRAINER IN VC++ (6)
    By spartacchio in forum C / C++ / C#
    Risposte: 24
    Ultimo Messaggio: 08-01-2009, 09:16 PM
  2. [TUTORIAL] Creare exe+dll!
    By steppone in forum C / C++ / C#
    Risposte: 21
    Ultimo Messaggio: 27-12-2008, 07:01 PM
  3. [Tutorial] Come creare un userbar
    By XManu70 in forum Graphic Tutorials
    Risposte: 10
    Ultimo Messaggio: 23-07-2008, 12:58 PM
  4. [Tutorial] Creare Ipod
    By steppone in forum Graphic Tutorials
    Risposte: 9
    Ultimo Messaggio: 10-07-2008, 04:48 PM
  5. [TUTORIAL] Creare cheat vb6 con img
    By TheClashDeDo in forum Visual Basic
    Risposte: 15
    Ultimo Messaggio: 22-06-2008, 02:38 PM

Segnalibri

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
Go to the top of the page

Banner  1