Archivio

Articoli taggati ‘DMA’

How To Find Pointer

24 luglio 2009 11 commenti

Come trovare pointer parte 1
creata da : legolas93

“Attenzione , la guida è protetta da diritti creative commons registrati , questa guida non può essere emulata se non sotto mia autorizzazione…inoltre la guida la potrete trovare su Cheating-X dove io personalmente l’ho postata, grazie dell’attenzione e buona continuazione”


1.0 : Il Gioco da Scegliere

molti pensano che il gioco influisce sul creare hack, con questa guida smentirò  tutti i vostri credo.Come ben sappiamo molti giochi sono “protetti” da un sistema di protezione chiamato DMA…. ora siccome non ho voglia di rispiegare tutto d’accapo vi consiglierei di controllare questa guida fatta da me. : http://legolas93.altervista.org/blog/?p=38 .Dopo aver appreso le conoscenze varie per poter lavorare sul DMA e sul game code possiamo passare alla ricerca del pointer qualora servisse.

2.0 : I vai attrezzi da utilizzare

per entrare a far parte di questo misterioso mondo vi elenco le cose di cui avrete bisogno.

-uno scanner : Cheat Engine o Tsearch , vi consiglio il 1. QUI
-conoscenze d’asm (assembly) e reversing
-tanta pazienza
-un po di intuito

ovviamente se vi mancano le conoscenze dell’assembly o non sapete utilizzare uno scanner, io vi consiglierei di fermarvi qui e di aspettare qualche mesetto prima di proseguire.

3.0 : Iniziamo la Ricerca

allora io come gioco ho scelto AirRivals QUI , non solo per farvi capire che non sono stato aiuto da gex ma anche perchè vorrei metin2 non fosse l’unico vostro punto di riferimento.

ovviamente la guida funziona per tutti i giochi e per ogni tipo di applicazione con DMA quindi è facoltativo scaricarsi il gioco.

Iniziamo!!!

per prima cosa,[b]assicuratevi che il gioco sia aperto[/b] (ciò mi sembra un po’ scontato ma sono sicuro che molti dei nabbi che leggeranno questa discussione non riusciranno a continuare proprio per questo motivo.).

apriamo il nostro caro amico CheatEngine , rispiego nuovamente i comandi e come utilizzarlo.

ovviamente l’utilizzo lo do per scontato….ho semplicemente detto dove si trovano i bottoni, per qualcuno che magari è stato abituato a usare Tsearch o altri programmi di ricerca.

Andiamo avanti….. Apriamo e selezioniamo il processoAirRivals.atm, iniziamo una nuova scansione….. per fare ciò io ho trovato la velocità  del lancio dei missili per fare una sorta di speed atk o meglio una hit atk. Do anche questo per scontato come si trova, anche perchè voglio far sforzare pure voi, ovviamente chi già  conosce l’argomento sa come dal pointer ricavarsi l’indirizzo.
Una volta trovato l’address e poi freezzato clicchiamo con il tasto destro e selezioniamo la voce….Find out what writes to this address

si aprirà una finestra vuota, se vi dovesse chiedere qualcosa premete sempre OK, cosa c’è ne facciamo di questa finestra vuota? ottima domanda,Tornata in game e sparate un missile, se state provando un altro gioco, simulate l’azione per il quale avete ricercato l’address, in questo caso spariamo un missile.

sono 2 funzioni ASM, se questa scrittura vi sembrerà arabo o simile vi consiglio di abbandonare qui e di andarvi a studiare l’assembly e qualora pensaste di sapere cosa significassero vi consiglio comunque di andare a studiarvi l’assembly.

4.0 : Lo studio della funzione

dopo aver completato la parte 3.0 passiamo ad analizzarli con più attenzione……
clicchiamo su MORE INFORMATION su una delle 2 funzioni, perchè è indifferente se lo facciamo sulla prima o sulla seconda ? semplicemente perchè queste 2 funzioni sono frutto dello stesso address, ovviamente fanno 2 cose diverse ma per quello che interessa a noi è indifferente.

cosa abbiamo trovato ? mentre gex su metin vi ha fatto notare che al posto di esi c’era ecx non spaventatevi non abbiamo sbagliato, esi ha una funzione analoga a ecx quindi non preoccupatevi….ora voi vi starete chiedendo, ma fin qui ci arrivavo pure io.ma io le spiego lo stesso :P

00596d1d – d9 5e 28 – fstp dword ptr [esi+28] , 00596d1d non è altro che un address del game code e questo non cambia mai per nessun motivo DMA o non DMA rimane invariato. d9 5e 28 meglio conosciuto come OPCODE non è altro che la traduzione della funzione asm che sta svolgendo. fstp dword ptr [esi+28] fermiamoci ad analizzare la funzione,  fstp dword ptr ammenochè voi non vogliate modificare il game code a vostro piacimento vi consiglio di lasciarlo invariato, a noi interessa [esi+28] , esi come spiegato prima è un registro di memoria che non fa altro che cambiare in continuazione , e questo è puro DMA, il valore di esi, a noi lo dava come pointer, perchè ? perchè  in quel momento quello era l’address che serviva a completare la funzione e che ci permetterà  di trovare il nostro pointer statico.

5.0 : troviamo il pointer

bene , torniamo su CE (cheat engine) , prendiamo l’address del registro esi, selezioniamo NEW SCAN , clicchiamo su HEX inseriamo l’address, su memory scan option selezioniamo ALL, così da estendere la ricerca su tutto. cliccate FIRST SCAN e aspettate.

mi sono accorto che avevo un altro address di esi . ma la cosa è indifferente l’importante è che abbiate capito il meccanismo…. dovrebbe essere spuntato un solo address o comunque o uno o 2 comunque da soli lo capireste comunque quale scegliere.
torniamo giù dove abbiamo lasciato il nostro vecchio address dello spara missili, doppio click sull address, e seguite lo screen.

premere OK e così non avrete più bisogno di ritrovare ogni volta l’address, ora bisogna solo scrivere un programma che legga e scriva sulla memoria, io vi consiglio un compilatore come VB o meglio C++.

nella prossima guida vi spiegerò come fare……

grazie di avermi seguito…. il vostro giuseppe sapienza aka legolas93

Categories: Mie Guide Etichette: , , ,

DMA e Memory Patching

22 luglio 2009 4 commenti

guida by me

COS’E’ UN TRAINER :

un trainer lo possiamo considerare come un programma in grado di modificare alcuni processi di un gioco così da facilitarci alcune opzioni nel gioco stesso.
il termine che viene usato nel campo dell’informatica si chiama MEMORY PATCHING (termine ignoto alla maggior parte degli utenti)  sarebbe la modifica di un programma che risiede in memoria , e come voi sapete se si chiude il programma si perdono le modifiche che gli avevamo fatto.
un esempio è quello del MH di gex001 che tramite un pulsante vi permette di aumentare la velocità  del vostro pg di quanto volte volete voi, e una volta chiuso il gioco e il MH si perdono le modifiche apportate.

COME SI CREA UN  TRAINER :

le fasi principali sono  3

1.trovare l’indirizzo da modificare
2.modificare l’indirizzo
3.scrivere un programma che ci permette di fare questo automaticamente (in teoria dovrebbe essere la parte più facile)

UN PRIMO ESEMPIO DI MEMORY PATCHING :

siccome mi sono seccato di scrivere passiamo al lato pratico.

per realizzare un memory patching ci serve un programma in grado di leggere dentro il programma così da poter modificare il gioco a nostro piacimento.credo che molti di voi già  abbiate capito di che programma parlo , per chi non lo sapesse sto parlando del celebre CE ( cheat Engine).

QUI IL DOWNLOAD DELLA NUOVA VERSIONE:
http://www.heijnen1.demon.nl/CheatEngine54.exe

il programma che oggi modificheremo è il PRATO FIORITO (START,TUTTI I PROGRAMMI,GIOCHI,PRATO FIORITO)

iniziamo, aprite prato fiorito , come notate il tempo scorre

APRIAMO CE (cheat engine)
accediamo al processo di prato fiorito con il tasto “Let’s you select the program you want to cheat with” (lampante come suggerimento..) in alto a sx

Aperto il processo con nome WINMINE.EXE, effettuiamo con CE una ricerca dei secondi che sono passati nel gioco scegliendo Exact Value e un valore di 4 bytes (un valore a 4 bytes può essere minore o uguale a 4294967295, di solito la maggior parte dei valori dei videogame sono a 4 bytes) dovete essere veloci perchè il tempo scorre  e siccome ci vogliono un paio di sec per poter ricercare il value dovete clicccare su  Pause the game while scanning dopo clicchiamo su First Scan e attendiamo che finisce il processo.

dopo che ha finito di ricercare nella colonna di sinistra sono spuntati tanti value , e tra questi c’è quello che ci interessa.
ora vi starete chiedendo qual’è l indirizzo che ci interessa ?
sicccome il gioco fa pena  ma veramente pena  vi accorgerete del l indirizzo che vi interessa perchè  lo vedete cambiare sempre in base ai vostri secondi trascorsi nel gioco.
ora siccome noi non l’abbiamo visto , lo dobbiamo cercare , ecco cosa fare

Torniamo in prato fiorito e controlliamo di nuovo i secondi.

ritorniamo in CE e inseriamo il nuovo valore dei secondi (veloci anche qua) e facciamo Next Scan

tadan è spuntato un solo valore
Cosa abbiamo fatto? Abbiamo ricercato un indirizzo di memoria con valore xx fra quelli della prima ricerca. Cioè un indirizzo il cui valore prima era quello ricercato nella prima ricerca e ora è cambiato a xx, e un solo valore rientra tra i nostri criteri ed è quello che ci interessa. Se avessimo avuto più valori avremmo continuato a ricercare valori con Next Search (che a differenza di First Search si può fare quante volte vogliamo sui valori che abbiamo trovato con la prima scansione).

Aggiungiamo il valore che ci interessa nella lista di indirizzi in basso selezionandolo e cliccando sulla freccetta rossa

Da qui possiamo cambiare il campo Value e aggiungere un valore che vogliamo noi, e daremo a questo indirizzo valore 1, cioè che dall’inizio del gioco è trascorso un solo secondo.

lol e si siamo riusciti a fare una minchiata che anche un bambino di 3 anni potrebbe fare. .-. , passiamo alle cose difficili.

COSA FARE

a questo punto non ci resterebbe che creare un bel programmino in qualche linguaggio (asm , c++ per fare le cose per bene e aggiungere un interfaccia grafica , evitando il vb , si anche io pensavo che vb era migliore del c++ ma mi sbagliavo , il c++ è più preciso in queste cose)  per fare in modo che premendo un tasto ci vada a modificare l’indirizzo che abbiamo trovato ( io ho trovato questo 0100579C ovvero l’indirizzo base del processo winmine.exe + 579C che è chiamato offset , ah dimenticavo tutti i numeri che stiamo analizzando sono esadecimale , in base 16) cosìche i secondi arrivino a 1 e il gioco è fatto xd.

bello vero ora vi sentirete dei veri hacker professionisti ? no non avete ancora visto niente , perchè¨ questo è un giochino da 4 soldi fatto per passarsi il tempo , mentre per la maggior parte dei giochi commerciali o online hanno delle complicazioni che per modificarli come abbiamo fatto con il prato fiorito c’è veramente da diventare pazzi.

COS’E’ IL DMA

DMA , è la sigla di DYNAMIC MEMORY ALLOCATION , già  starete pensando vabbè¨ cosa c’è di tanto straordinario in questa sigla ? , per chi ha un po di intuito e conosce un po di inglese e ha notato la parola DINAMYC già  si starà  mettendo le mani nei capelli , e ora capirete perchè è così odiato da molti programmatori di cheat.

in parole povere un programma protetto da DMA è un programma dove valgono tutte le regole del memory patching ma che è molto fastidioso e che scassa veramente le palle , inquanto ammettiamo di aver trovato un indirizzo in un gioco proteddo da DMA  es.0100579C
in questi giochi questo indirizzo può variare e quindi non rimane statico.
un esempio noto a tutti e METIN2 li gli indirizzi cambiano da pc a pc oppure ogni volta che passate un portale o che morite , ed è questo che rende gex così famoso e bravo.
ammettiamo che metin non fosse protetto da DMA , allora ci sarebbero in circolazioni milioni di cheat con le più svariate funzioni , cosa che accade in WARROCK dove gli indirizzi sono fissi. ma cambiano in ogni aggiornamento.
ritorniamo in prato fiorito , AMMETTIAMO che il gioco fosse protetto da DMA il nostro bel programmino (cheat) che abbiamo compilato e che va a modificare l’indirizzo 0100579C servirebbe a ben poco perchè al prossimo riavvio del gioco il programma automaticamente sposterà  l’indirizzo in cui vengono contenuti i sec trascorsi in un altro indirizzo.e quindi tutti  i nostri progetti di diventare ricchi vendendo cheat per prato fiorito sono svaniti.
e per spieggare anccora meglio il concetto se in un gioco protetto da DMA trovate l’indirizzo dei crediti non significa nulla perchè oltre a cambiare indirizzo ogni volta che riavviate il gioco questo indirizzo potrebbe essere protetto da un ciclo che ne evita la manipolazione e anche se li cambiate , il gioco automaticamente se ne frega che avete modificato il value e continua per la sua “strada”

Ecco perchè creare un trainerè una cosa difficoltosa con alcuni giochi,è necessario realizzare un memory patching che tenga conto che l’indirizzo nel quale viene memorizzato il valore che ci interessa può cambiare anch’esso! , questo è  il DMA in parole povere.

COME FREGARE IL DMA

non vi preoccupate il mondo non è ancora finito XD siamo nel meglio della nostra avventura, ricapitolando.
Ogni gioco protetto da DMA può dunque variare gli indirizzi di memoria in cui vengono memorizzati i dati di gioco negandoci la possibilità di creare un trainer decente.
Ma ogni gioco (e non solo quelli protetti da DMA) ha una caratteristica: un cosiddetto ‘game code’, delle istruzioni di gioco fisse e non spostabili da un indirizzo all’altro.
game code? cos’è ? si mangia? o è un nuovo gioco della gameforce?
niente di tutto questo , il game code sarà  il vostro 2 migliore amico , e detto questo ?
detto questo il game code non fa altro che determinare e scegliere gli indirizzi dove vengono memorizzati i dati che cambiano in continuazione.

LE CONOSCENZE DELL’ASM

inutile dirlo da come si capisce  bisogna avere un po di conoscenze sul linguaggio assembly , perchè senza questo vi sarà  diciamo impossibile creare un cheat che possa fregare il DMA.

Categories: Mie Guide Etichette: , ,
Iscriviti

Get every new post delivered to your Inbox.