Guida [FOR ALL] UTILIZZARE IL "CODE INJECTION" DI CE (code cave)

Stato
Discussione chiusa ad ulteriori risposte.

GabriPr0

Utente Electrum
25 Aprile 2009
303
13
32
132
Ultima modifica da un moderatore:
Oggi non avevo niente da fare e ho deciso di creare una guida su come utilizzare il code injection (praticamente un code cave) di cheat engine. La guida è passo passo e (mi sembra) spiegata chiaramente. Allego Screen dopo la descrizione di ogni passaggio.
Per coloro meno pratici in questa guida non si sta modificando il programma in modo permantente lol.

Occorrente:

  • Cheat Engine
  • Solitario di windows (il primo programma che mi è venuto in mente).
  • Voglia e qualche conoscenza di ASM.
  • Molte delle istruzioni trovate o usate potete "capirle" qui
Si Parte:


  1. Aprire Cheat Engine e solitario e scegliere come processo Solitarie.exe ( http://img682.imageshack.us/img682/371/procedimento1.jpg )
  2. Hackeremo il tempo del solitario. Invece di avanzare tornerà indietro. (E' facilmente fattibile modificando una sola istruzione ASM. La guida cerca di spiegare il code cave. Non criticate dicendo: "io so farlo modificando questo e quest'altro"..)
  3. Fare partire il tempo facendo una mossa valida o cliccando il mazzo.
  4. Cercare il value del tempo. Per trovarlo consiglio di mettere Scan Type: Value Between... e digitare l'intervallo in qui si trova il tempo. ( http://img121.imageshack.us/img121/5049/procedimento2.jpg )
  5. Se come nel mio caso appaiono più di un address fare Scan Type: Changed Value ( http://img121.imageshack.us/img121/8076/procedimento3.jpg )
  6. Trovato il value (non vi preoccupate se è leggermente in ritardo) cliccatelo e poi cliccate sulla freccina rossa. ( http://img18.imageshack.us/img18/5638/procedimento4.jpg )
  7. Cliccate col destro su di esso e selezionate "Find Out What Accesses This Address" letteralmente "Cerca Cosa Accede A Questo Address"
    Cliccate Yes alla messagebox. ( http://img18.imageshack.us/img18/1656/procedimento5.jpg )
  8. Dovrebbero apparire 3 istruzioni: quale interessa a noi? Semplice quella che dice inc [eax+08]. Inc semplicemente significa Increment, in italiano incrementare, aumentare. Ciò significa che abbiamo trovato l'address che incrementa il tempo di 1. A noi interessa decrementare. Potremmo semplicemente cambiare l'istruzione in dec[eax+08]. Ma non è quello che faremo. ( http://img682.imageshack.us/img682/3821/procedimento6.jpg )
  9. Cliccate su Show Disassembler ( http://img192.imageshack.us/img192/6992/procedimento7.jpg )
  10. Selezionare l'address che ci interessa ( inc [eax+08] ) e cliccare su Tools quindi su Auto Assemble. ( http://img682.imageshack.us/img682/6158/procedimento8.jpg )
  11. Si aprirà un piccolo editor di testo. Clicchiamo su Template (spero tutti sappiate così sia un template, cmq nn ci interessa :D) quindi su "Code Injection".
  12. Controllare che l'address nella TextBox sia quello che interessa a noi. Quindi cliccare su OK. Se non siete pratici di ASM lasciate stare quello che è scritti all'inizio. A noi non interessa. Dovete mettere l'istruzione che vi interessa nella zona newmem. Io ho già collocato l'istruzione dec ( decrement) ma potete mettere quello che volete. Nella zona originalcode si troverà invece l'istruzione che viene eseguita dal programma normalmente. Se vogliamo che continui a essere eseguita lasciamo stare mentre se, come nel nostro caso darebbe solo noia leviamola. ( il codice farebbe diminuire di 1 quindi aumentare di 1: risulato tempo fermo o_O). ( http://img199.imageshack.us/img199/3594/procedimento9.jpg ) ( http://img121.imageshack.us/img121/9899/procedimento10.jpg ) ( http://img9.imageshack.us/img9/3796/procedimento11.jpg )
  13. L'istruzione call invece lasciamola stare. Quando siamo pronti clicchiamo su Execute, sì alle 2 messagebox e godiamoci il risultato...

Il tempo scorre al rovescio. Tramite il Code Injection possiamo utilizzare istruzione che dovrebbero occupare più address di quelli disponibili.

Album Screen

Se avete dubbi o domande scrivete pure. Spero di essere stato chiaro. Accetto critiche e commenti.
 
  • Mi piace
Reazioni: carbos
Ultima modifica:
Prossima guida aggiungo anche come scrivere un programma che faccia il tutto e ridemensiono screen così da mostrali senza deformare la pagina. Lo scriverò in C++ e VB.net
 
Ma dai xD mo fa anche questo CE? non c'è più il gusto di prendere carta e penna e scriversi i valori trovati :p

comunque ottima guida!
 
Lol io l'ho "trovato" facendo il tutorial di CE fino all'ultimo livello. Ormai con cheat engine puoi fare tutto.
 
thanks.. diciamo che la guida non è finita, l'ho completata portando tutto in C++/.Net
Se vuoi vederle sono stickate nelle apposite sezioni!
 
Questo topic è veramente vecchissimo, se non ricordo male cheat engine è cambiato veramente troppo da allora, questa guida è decisamente outdated...
 
Ultima modifica:
Il problema è che nella guida di Speedjack questo metodo non c'è!
Posso spiegarti la teoria, visto che la pratica (con CE) non la conosco.
A grandi linee il codecave consiste nel scrivere del codice arbitrario in alcuni blocchi di istruzioni vuote, questi blocchi si vengono a formare a causa dell'allineamento che forza le sezioni ad avere sempre un po' di spazio libero.
Per fare un codecave ti basterà assemblare il codice arbitrario in un blocco inutilizzato (puoi controllare con breakpoints volendo, ma di solito si vedono a occhio) una volta che il codice è pronto assembli dove vuoi che avvenga un jump al tuo codice, ovviamente quest'ultimo dovrà ritornare con un jump all'istruzione subito successiva a quella modificata dal jmp assemblato...
Ti faccio un esempio, questo può essere il codice originale:
Codice:
PUSH 0
MOV EBX, DWORD PTR SS:[EAX + 0x4]
INC EBX
CALL ....

Il codice dopo il codecave sarà:

Codice:
PUSH 0
MOV EBX, DWORD PTR SS:[EAX + 0x4]
JMP (Indirizzo del Codecave)
NOP
e all'indirizzo dove punta il jump avremo il nostro codecave, per esempio:
Codice:
ADD EBX, 1337
CALL ....
JMP (indirizzo del NOP)

L'ho spiegato veramente male, spero tu capisca :lol:
 
  • Mi piace
Reazioni: Maestro Yoda
Stato
Discussione chiusa ad ulteriori risposte.