Benvenuto! Per postare e godere delle funzionalità del forum registrati, occorrono pochi secondi ed è gratis!

Array of bites aiuto digger
(Questo messaggio è stato modificato l'ultima volta il: 23/08/2012, 22:10 da digger.)

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
Perdonami la faccio corta perchè non sto bene e fa pure un caldo da fare schifo qui quindi la voglia è poca...

Quindi per farla corta ti dico che ti faccio vedere come usare il sistema degli array di bytes sull'energia del carroarmato.
Per farla corta inizialmente appena inizi la primissima partita l'energia vale 1000.
Quindi cerchi 1000 poi ti fai colpire e cerchi "diminuito" un po' di volte finchè ti rimane una sola variabile.
Fai doppio click per metterla sotto come sempre.
Poi vai sotto e fai tasto destro e seleziona "Find out what writes to this address"

[Immagine: 02817-2c5c4629-bc78-47c5-860f-a442127928c8.png]

ti aprirà una finestrella cosi che lascerai aperta:
[Immagine: 02817-1c11f537-e36d-4be2-acb7-b06ef3754740.png]

ora torna al gioco e fatti sparare da qualcuno e poi distruggilo (se no ti uccide e non puoi andare avanti).

Torna alla finestrella di prima e vedrai che ti ha aggiunto una linea di codice cosi:

[Immagine: 02817-17edddf7-39d4-40f1-abba-2384ea73d3a3.png]

Quella altro non è che la linea di codice del gioco che si occupa di assegnare alla variabile dell'energia il valore corrente calcolato in base ai colpi che hai subito.

Adesso dobbiamo mettere da parte l'array di bytes che rappresenta questa riga di codice per poterla cercare in futuro.

L'array sarebbe quel 89 46 14
ma ti dico subito che se provassi a cercarlo ti uscirebbero un sacco di righe e quindi non sapresti quale usare:

[Immagine: 02817-5f98a936-b4fa-433a-9390-b468580c6dc1.png]

Questo perchè nel programma del gioco quella stessa riga di codice compare un sacco di volte, con scopi diversi.
Allora che facciamo ? semplice, dobbiamo includere qualche altro byte dell'array in modo da renderlo il piu "unico" possibile al nostro caso.
Proviamo a prendere i bytes dell'istruzione subito precedente e vediamo se abbiamo fortuna.
Per farlo facciamo tasto destro su quella riga di codice e selezioniamo "show this address in the disassembler" :

[Immagine: 02817-23b59636-7c88-490e-9a9e-4570370b39ae.png]

Ci si apre la finestra del disassembler che ci fa vedere il codice (assembly) del gioco.
Siamo posizionati proprio sulla riga incriminata trovata prima , ovvero la
mov [esi+14],eax

i cui bytes erano (si vede a sinistra) 89 46 14

se ora scrolliamo verso l'alto di qualche riga (ne basterebbe 1) ci esce la riga di codice subito prima che è :

mov eax,[ebp-60] i cui bytes sono 8B 45 A0

allora col mouse selezioniamo le 2 righe appena viste e premiamo CTRL-C per copiare, nella finestrella che ci esce lasciamo la flag SOLAMENTE SU BYTES e premiamo Copy

ecco lo screen:
[Immagine: 02817-143d65f4-b12a-434d-918e-bd071e45c5ed.png]

ora abbiamo il nostro array di bytes, incolliamolo in notepad per vederlo bene:

[Immagine: 02817-cd706f8c-6326-44de-9090-767b7b9bc5cf.png]

ok, ora sistemiamolo per bene unendo i bytes e poi andiamo in Cheat Engine e facciamo:
- new scan
- togliamo la flag da "writable" (stiamo cercando codice, non variabili)
- value type -> Array of bytes
- incolliamo il nostro array di bytes nel textbox della ricerca
- first scan
Abbiamo trovato 1 solo indirizzo, ottimo! siamo stati fortunati, vuol dire che è quello che ci interessa:

[Immagine: 02817-0809573f-f733-48d6-a7ca-49919bdacc41.png]

Ok, adesso che ce l'abbiamo come facciamo ad hackerare?
Semplice, doppio click sull'indirizzo trovato per metterlo sotto.
Andiamo sotto e doppio click sulla colonna a destra, "value" per editarne il valore

Il valore al momento è l'array stesso, quindi 8B 45 A0 89 46 14
Vi ricordate che i primi 3 sono un'istruzione e i secondi 3 sono L'ISTRUZIONE che si occupa di impostare l'energia?
Quindi dobbiamo cambiare i secondi 3, con cosa? semplice con l'istruzione assembly "NOP" che significa "NO OPERATION" ovvero non fare niente.
NOP = 90
siccome i bytes li sono 3 dobbiamo mettere 3 volte 90, cosi:

[Immagine: 02817-62c7a16a-781e-4603-adb4-f87c35144a0d.png]

appena premiamo ok la modifica è istantanea, non serve flaggare a sinistra come si fa di solito, il codice è già modificato.

Quindi torniamo nel gioco e proviamo a farci sparare, vedrete che l'energia non scende piu... buon divertimento Happywide

[Immagine: 02817-424077cc-7baf-4e78-a038-527bb088c702.png]

l'energia resta sempre qui:

[Immagine: 02817-a120ba7b-e0b8-4eed-a988-a788456bc43c.png]

Se poi volete, potete tornare nella finestra di prima del disassembler per vedere effettivamente come è cambiato il codice,
notate che la prima istruzione c'è ancora (i primi 3 bytes) mentre la seconda è sparita, sostituita da 3 NOP:

[Immagine: 02817-c2e07f45-c9b5-47f8-84e2-2d7240e118d5.png]

Happywide


digger
23/08/2012, 21:29
#4
Cerca


Messaggi in questa discussione
Array of bites aiuto digger - da Pocciox - 23/08/2012, 13:47
[Nessun oggetto] - da digger - 23/08/2012, 16:36
[Nessun oggetto] - da Pocciox - 23/08/2012, 16:44
[Nessun oggetto] - da digger - 23/08/2012, 21:29
[Nessun oggetto] - da TheFrank - 23/08/2012, 22:16
[Nessun oggetto] - da Luxor - 23/08/2012, 22:18
[Nessun oggetto] - da digger - 23/08/2012, 22:19
[Nessun oggetto] - da Pocciox - 24/08/2012, 0:36
[Nessun oggetto] - da digger - 24/08/2012, 0:41
[Nessun oggetto] - da Pocciox - 24/08/2012, 12:32
[Nessun oggetto] - da digger - 24/08/2012, 19:24
[Nessun oggetto] - da TheFrank - 24/08/2012, 19:53
[Nessun oggetto] - da digger - 24/08/2012, 20:12
[Nessun oggetto] - da Pocciox - 25/08/2012, 16:57

Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  [aiuto] No segnale su sapphire R9 280. Pocciox 5 2,453 14/01/2015, 22:11
Ultimo messaggio: digger
  aiuto portatile oirad94 1 1,705 22/12/2014, 16:27
Ultimo messaggio: Admin
  Aiuto Nella Definizone Rokys091 9 3,738 25/11/2014, 10:24
Ultimo messaggio: digger



Utenti che stanno guardando questa discussione: 1 Ospite(i)