#1 Inviato 30 April 2016 - 19:43 PM
Ogni sogno a cui rinunci è un pezzo del tuo futuro che cessa di esistere
-Steve Jobs-
#2 Inviato 30 April 2016 - 21:51 PM
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
completo! Giocabile online, qui i dettagli! ^ ^
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^
#3 Inviato 02 May 2016 - 09:16 AM
C'è una cosa da sapere al riguardo.
Anche se dubito che install creator faccia questo.
Ma un pò di informazioni al riguardo possono tornare sempre utili nel caso si verificassero problemi del genere.
Dovete sapere che alcuni exe vengono danneggiati apposta dall'autore.
In pratica viene danneggiato l'header del file appositamente per impedirne la lettura esterna come debugger o lettori esadecimali.
Principalmente nel dump.
o allo stack dell'entry point.
Certo esistono alcuni tool per riparare gli header danneggiati.
Ma avvolte hanno scarso successo.
Il consiglio di guardian è ottimo.
prova con quello.
Quello strumento tenterà di riparare gli indirizzi di memoria mancanti all'header.
di solito prende gli indirizzi di memoria non allocati, vuoti che si trovano alla fine di ogni file.
Ne prende uno qualsiasi e lo rimpiazza con quello danneggiato.
Da Sinistra verso Destra :P
Daemond, Thejuster, OldPat
Artwork by Hrot
Manca ancora lui XD
______________________________________________________
Produzione Software, Componenti e Controlli
_______________________________________________________
*** Linguaggi di Programmazione Conosciuti e competenze Tecniche ***
C#, Javascript, Java, PHP, SQL, Autoit v3, JQuery, HTML, HTML5, C++, VB.NET,
Android, DirectX, HLSL, XML, Access, LUA, Delphi, Pascal, Assembly, Fortan, Angular JS
Tool per la creazione di MMO Rpg. Open Source,
Vuoi far parte del team di sviluppo?
#4 Inviato 02 May 2016 - 11:47 AM
Dovete sapere che alcuni exe vengono danneggiati apposta dall'autore.
In pratica viene danneggiato l'header del file appositamente per impedirne la lettura esterna come debugger o lettori esadecimali.
D:
Ma intendi che vengono danneggiati in maniera che a molti funzionano comunque anche se poi i debugger ed i lettori esadecimali non posson leggerli? ^ ^
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
completo! Giocabile online, qui i dettagli! ^ ^
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^
#5 Inviato 03 May 2016 - 11:02 AM
esattamente.
Danneggiando l'header non danneggi il programma,
ma impedisci di leggere delle informazioni dai debugger.
In questo sito sono elencate alcune tecniche.
https://www.whitehaw...ory/anti-debug/
Qui è citata una sorta di tecnica che ho spiegato prima.
- Check or damage the content of interrupt or trap vectors used for debugging.
Il mondo dell'hacking o reverse engineer e veramente vasto e difficile spiegarlo in pochi passaggi.
tempo fà postai un programma che manipolava le informazioni da rpgmaker 2003 se ricordate.
quello è Reversing Engineer,
Permetteva di creare battaglie anche se non esistevano, di aprire shopper, spostarsi da una posizione o l'altra.
questo si fà osservando bene il codice macchina ( Assembly ) con un Debugger agganciato al programma.
Indirizzi di memoria ( 0x20A5B76 ) e Offset ( 0x12f ) esempio.
che a loro volta puntano ad un puntantore di tipo ( void (*void) type )
che può essere DWORD o ULONG dipende dai casi, sono dettagli che vanno osservati leggendo il codice Assembly.
Mentre danneggiare un header anziché inserire un controllo di presenza di un debugger e più efficacie come tecnica.
anche se ovviamente c'è sempre il modo per bypassare tutto.
C'è una lezione da imparare ( Chi crea, può distruggere )
Se una cosa è stata creata può anche essere distrutta ovviamente, non esiste l'impossibile.
Però per il 90% degli utenti medio / avanzati nel mondo risulta essere molto complicata la cosa se non si sà
dove mettere le mani
Modificato da Thejuster, 03 May 2016 - 11:11 AM.
Da Sinistra verso Destra :P
Daemond, Thejuster, OldPat
Artwork by Hrot
Manca ancora lui XD
______________________________________________________
Produzione Software, Componenti e Controlli
_______________________________________________________
*** Linguaggi di Programmazione Conosciuti e competenze Tecniche ***
C#, Javascript, Java, PHP, SQL, Autoit v3, JQuery, HTML, HTML5, C++, VB.NET,
Android, DirectX, HLSL, XML, Access, LUA, Delphi, Pascal, Assembly, Fortan, Angular JS
Tool per la creazione di MMO Rpg. Open Source,
Vuoi far parte del team di sviluppo?
#6 Inviato 03 May 2016 - 12:31 PM
Grazie per la dettagliata spiegazione, messo il sito in segnalibri, mi spulcerò le tecniche durante la visita ai siti della mattina! XD
Mi sembra così strano che basta danneggiare l'header per depistare tutto facendo comunque funzionare il programma, ma buono a sapersi, una tecnica semplice.
^ ^
In generale il reversing Engineer lo conoscevo, mi manca il dettaglio, peccato, sarebbe pure un corso interessante da seguire, ma il tempo > <
Ricordo il tuo programmino! ^ ^
Mmmmh... vuoi tenere un corso sul come effettuare una reverse engineer su rpg maker? XD
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
completo! Giocabile online, qui i dettagli! ^ ^
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^
#7 Inviato 03 May 2016 - 22:24 PM
magari quando ho un pò di tempo lo faccio sicuramente XD
nel frattempo se vuoi degustarti questo mio piccolo video puoi vedere che si può fare tranquillamente anche in C#
per alcuni motivi, non legati al linguaggio ma per altre cose, o per testare alcuni fattori,
quel programma l'avevo scritto in C++.
Ma prima di fare quel programma in C++ lo avevo realizzato prima con il C#
non è che cambia molto tra C++ e C#
L'unica differenza è che in C# puoi usare frammenti di codice C++
mentre in C++ puoi usare frammenti di codice Assembly.
Alla fine non cambia molto
In questo video mostro come manipolare la memoria del programma di windows "Calc.exe"
la normalissima calcolatrice.
in pratica il mio programma va a manipolare un programma esterno "nativo"
del tipo in quel video ho fatto credere alla calcolatrice che io ho premuto 2 ma non l'ho premuto.
gli ho inviato dei segnali che lui ha interpretato come se ho premuto 2.
in quel caso, anche se il pulsante era disabilitato,
avrei potuto attivarlo, ed inviargli l'azione.
Tipo?
TIpo un programma che scade dopo 30 gg.
il pulsante continua diventa nero,
Posso sbloccarlo, ed fargli credere che il pulsante è ancora attivo e quindi continuare ad usarlo ugualmente.
come ho fatto un certo programma che non faccio nome XD
Cmq è molto istruttivo ed interessante da guardare.
gli indirizzi li conoscevo a memoria quindi li avevo già studiati in precedenza dal debugger.
Vi chiedo di non prendere questo esempio da me lol.
Il mio è puro scopo didattico è sportivo.
Non sono un hacker, cracker o qualcuno che rilascia sul web programmi craccati.
ma lo faccio solo per divertimento.
Non insegno a fare queste cose,
Ma posso insegnare l'arte della programmazione che è ben diversa dal reversing o cracking.
Ma un pò di istruzione o almeno vedere come funziona una cosa non fà male a nessuno
Modificato da Thejuster, 03 May 2016 - 22:37 PM.
Da Sinistra verso Destra :P
Daemond, Thejuster, OldPat
Artwork by Hrot
Manca ancora lui XD
______________________________________________________
Produzione Software, Componenti e Controlli
_______________________________________________________
*** Linguaggi di Programmazione Conosciuti e competenze Tecniche ***
C#, Javascript, Java, PHP, SQL, Autoit v3, JQuery, HTML, HTML5, C++, VB.NET,
Android, DirectX, HLSL, XML, Access, LUA, Delphi, Pascal, Assembly, Fortan, Angular JS
Tool per la creazione di MMO Rpg. Open Source,
Vuoi far parte del team di sviluppo?
#8 Inviato 04 May 2016 - 00:22 AM
magari quando ho un pò di tempo lo faccio sicuramente XD
Ottimo! XD
Interessante vedere la calcolatriciaccia manipolata! XD
La tecnica della trial la conosco, è abbastanza famosa e vedo usata da altri pure qui sul forum! è____é
Sì, comunque non era per hackerare, giusto per sapere come funziona un po' di buon reversing engineer.
^ ^
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
completo! Giocabile online, qui i dettagli! ^ ^
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^
#9 Inviato 04 May 2016 - 08:06 AM
Cmq il procedimento è lo stesso.
Cioè fare un reversing da C# o C++ e lo stesso procedimento.
ovviamente cambia la sintassi, ma non la tecnica.
il trucco sta nel capire quale indirizzo di memoria che cerchi da quale puntatore viene manipolato.
I puntatori che vengono dichiarati nel codice esempio
int *hp;
int *mp;
I puntatori a differenza di una variabile che viene allocata in memoria dinamicamente dal grabage, i puntatori vengono assegnati in un indirizzo
di memoria statico.
In breve, i puntatori hanno un indirizzo di memoria fisso, le variabili no.
quindi cercando nella memoria
riuscirai a trovare esempio
0x524FE24 = 100 (HP)
se poi riavvi il programma o gioco quel che sia,
l'indirizzo cambia, perché hai trovato la variabile non il puntatore
quindi in seguito troverai
0x458af7e = 100 ( HP )
La soluzione è trovare un puntatore.
Un puntatore ha un indirizzo abbastanza chiaro e semplice a differenza di una variabile.
in più sfrutta degli offset per puntare ad una variabile
Li devi usare la calcolatrice di windows, in modalità programmatore e spuntare l'opzione HEX
spulciando l'assembly l'indirizzo 0x458af7e potrebbe avere delle funzioni di calcolo esempio
add ecx,eax //Addizione mov [0094CC],ecx
come vedi c'è un 0099CC
quello è sicuramente un puntatore al 100%.
in assembly le operazioni partono da destra verso sinistra
in questo caso calcola
add ecx, eax ( Addiziona eax + ecx )
mov [0099CC],ecx ( Sposta il valore di ecx al puntatore )
Quindi qui possiamo capire che e come se il giocatore avrebbe preso una sorta di rigenerazione degli hp.
tanto per dirne una, e aumenta la vita.
per vedere gli offset bisogna guardare lo stack di memoria
potremmo trovare del tipo:
add ecx,eax [Stack] eax = 00000010 ebx = 01Fe56A2 ecx = 05C0264A
eax ha 10
ecx punta ad un indirizzo di tipo 05C0264A
prendendo la calcolatrice in modalità programmatore e selezionando HEX se scriviamo sulla calcolatrice
5C0264A + 10 = 05C0265A
abbiamo l'indirizzo del nostro puntatore.
noi dovremmo fare un qualcosa del genere
C++
//Da nativo a Managed .net //come mostrato nel video sopra che ho fatto typedef DWORD IntPtr; typedef unsigned long ulong; IntPtr indirizzo = 0x05C0264A; IntPtr offset = 0x10; int valore = 0; //user32.dll ReadProcessMemory(HWND,(void*)indirizzo + offset,&valore,(IntPtr)sizeof(valore),NULL);
a questo punto esegendo cout << valore; otterremo 10
ma possiamo anche scrivere ovviamente sull'indirizzo non solo leggerlo
anzichè fare ReadProcessMemory, useremo WriteProcessMemory
il principio base e questo :)
poi esistono altri tool messi a disposizione anche da microsoft.
la libreria Detorus
breve tutorial
https://leakforums.net/thread-157182
Moltissimi Hack di giochi vengono fatti da questa libreria
Vero Cherry? :D
o cheat come WallHack per diversio giochi FPS.
Li si usa un hook alle directX
IDirect3DDevice9* pTempDev = ...; const int CambioScena = 26 (?); typedef HRESULT (IDirect3DDevice9::* CambioScena )( void ); BYTE* pVtable = reinterpret_cast<void*>( pTempDev ); CambioScenaFunc = pVtable + sizeof(void*) * CambioScenaIndex;
la Vtable è indicata come Tabella virtuale delle operazioni o di indirizzi / offset della memoria.
Questo codice, cambia il metodo originale di un gioco in un nuovo metodo.
Non facendo fare più quello per la quale era stato programmato, ma facendogli fare ciò che dico io.
normalmente un gioco è stato programmato per eseguire:
Trova Mela
Aggiungi 10 HP
Fine
reintrepretando il void, possiamo fare
Trova Mela
---> Trampolino --- > [ Aggiungi 50 HP, Salva Partita, Fai Questo, Fai Quello ]
Aggiungi 10 HP
Fine
Nella vTable troviamo void come:
Operazioni di scrittura a schermo
Operazioni di rendering a schermo ecc. ecc.
Il buon vecchio Cherry ha fatto questo giochetto con il 2k3.
E' stato molto bravo a trovare tutti gli indirizzi questo indubbiamente.
Ed ha la mia stima :D
Modificato da Thejuster, 04 May 2016 - 08:45 AM.
Da Sinistra verso Destra :P
Daemond, Thejuster, OldPat
Artwork by Hrot
Manca ancora lui XD
______________________________________________________
Produzione Software, Componenti e Controlli
_______________________________________________________
*** Linguaggi di Programmazione Conosciuti e competenze Tecniche ***
C#, Javascript, Java, PHP, SQL, Autoit v3, JQuery, HTML, HTML5, C++, VB.NET,
Android, DirectX, HLSL, XML, Access, LUA, Delphi, Pascal, Assembly, Fortan, Angular JS
Tool per la creazione di MMO Rpg. Open Source,
Vuoi far parte del team di sviluppo?
#10 Inviato 04 May 2016 - 12:02 PM
La questione puntatori e variabili la conoscevo. Interessante il metodo di riconoscere il puntatore. L'assembly lo devo ripassare, ma più o meno ho capito i metodi elencati! ^ ^
Vero Cherry? :D
Guarda che ogni tanto qui è passato! Poi ti legge davvero! XD
Ed ha la mia stima :D
A differenza di altri! XD
Siamo un po' OT qui, se vuoi parlarne anche in maniera generale senza per ora dedicarti a tutorial possiamo staccare il topic e continuare in un altro! ^ ^
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
completo! Giocabile online, qui i dettagli! ^ ^
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^