Copy Link
Add to Bookmark
Report

Da Time Limit a Registrato

DrWatson's profile picture
Published in 
guide hacker
 · 28 Apr 2018

Salve a tutti i miei carissimi lettori, oggi vi voglio deliziare con un prg che ha dell'incredibile: voi pensavate di avere un prg shareware per le mani con tanto di nag screen e time limit, ed invece i programmatori avevano previsto la possibilità di registrarsi senza però far vedere questa opzione all'utente, e solo dopo un'analisi del codice assembler ho scoperto questa variante.... SIETE CURIOSI !!!! Benissimo procediamo.

Il prg target è Adobe ImageReady 1.0 e lo strumento che andremo ad utilizzare sarà il classico Softice. Come si presenta il prg quando viene lanciato? Con una classica nag screen che indica tra l'altro il tempo residuo di vita del prg. A questo punto potremmo già agire eliminando il time limit e la nag, come? semplicemente usando il cmd BPX DIALOGBOXPARAMA, in questo modo possiamo vedere dove il prg effettua il controllo del tempo e qual è la call che fa apparire sullo schermo la nag. Tuttavia questo tutorial si prefigge altri interessi, come vi avevo accennato all'inizio, quindi lascio questa operazione a chi vuole divertirsi ( consiglio a chi volesse seguire questa strada, che deve stare attento ed inserire un'istruzione che vada a modificare EDX altrimenti il prg crasherà).

Bene bene ora entriamo nel merito del tutorial. Prima di tutto portate la data del vostro sistema 2 mesi avanti, in questo modo quando lancerete il prg, questo si dovrebbe presentare con una nag che vi dice che avete terminato il periodo di prova. Fatto ciò, fissate in Softice un BPX DIALOGBOXPARAMA e lanciate l'applicazione; sicuramente entrerete in Sice, quindi premete F12 e sarete di nuovo nel prg che avrà caricato la nag. Premete l'unico tasto che potete premere, cioè QUIT, e sarete di nuovo dentro Sice. Ora fate caso ad una cosa; voi siete nell'istruzione successiva alla call che crea la nag, e questa istruzione vi dice : CMP EAX, 06 , ma se andate a vedere EAX potete vedere che ha come valore EAX = 00000007 ; ciò vuol dire che premendo il tasto QUIT viene ritornato al controllo il valore 7, e dato che QUIT è l'unico tasto che è possibile premere perchè esiste quell'istruzione CMP EAX,06 ?? Per scoprirlo che ho fatto, ho modificato il valore di EAX, con il comando R EAX = 00000006 , a questo punto il JE che si trova subito dopo il CMP è true e quindi avviene il salto che ci porta .............. ma che succede, ritorniamo nel prg e compare un nag dove vengono richieste le informazioni dell'utente per registrarsi, wow abbiamo trovato un'insieme di istruzioni che erano state nascoste.

Riempite tutti i campi e premete NEXT, comparirà una nuova schermata dove vi verrà richiesta la modalità di pagamento tramite Carta di Credito; niente paura inserite un qualunque codice a 10 cifre nel campo del numero della carta di credito, inserite una qualunque scadenza e premete NexT; adesso vi chiederà come volete contattare la sociètà, optate telefonicamente, quindi nella schermata successiva vi verrà richiesto di inserire il codice di sblocco del prg, codice che dovrebbe esservi stato dato dalla Adobe. Ok inseriamo un codice qualunque e mettiamo in Sice un BPX HMEMCPY, premete F5, ritornerete quindi nel prg, premete OK e vediamo che succede. Eccoci rientrati in Sice, F12 per circa 10 volte e vi ritroverete dentro una dll di image ready ed esattamente rsagnt32.dll, steppate con F10 fino ad arrivare a queste istruzioni:

 
1000B2DA DEC ECX -----> ECX contiene il numero di cifre del codice che abbiamo inserito
1000B2DB CMP ECX,00A ----> se le cifre del codice sono diverse da 10 allora non avviene il
1000B2DE JE 1000B31B salto

per non modificare troppo il prg, inseriamo un codice a 10 cifre e ripetiamo l'operazione; questa volta il JE sarà soddisfatto e avverrà il salto, quindi arriviamo all'istruzione 1000B31B:

 
1000B31B MOV EDX , [100317D4]
1000B321 PUSH 1002B580 ------> se fate D 1002B580 vedrete un codice alfanumerico
1000B326 ADD EDX , 00000106
1000B32C PUSH EDX
1000B32D PUSH 1002B560
1000B332 CALL 1000B950
1000B337 ADD ESP , 00C
1000B33A PUSH 1002B570 -----> in 1002B570 c' è il codice che abbiamo inserito
1000B33F PUSH 1002B580
1000B344 CALL 1001FAB0 -----> questa call verifica che il codice inserito sia giusto e se lo è
1000B349 ADD ESP , 008 ritorna come valore di EAX = 0
1000B34C TEST EAX , EAX
1000B3AB JNE 1000B3AB

Dato che avendo inserito un numero a caso di 10 cifre sicuramente non sarà quello giusto, avete due alternative: 1) Entrate nella call che si trova su 1000B344 e cercate di capire come viene generato il vero codice, oppure ( molto più semplicemente)
2) quando vi trovate sull'istruzione 1000B349, modificate il valore di Eax con il comando R EAX = 0, in entrambi i casi il prg vi dirà che da quel momento in poi è registrato, e voi non avrete più scocciature con le nag iniziali e con il time limit.

Ringraziamenti : A tutto il mio gruppo preferito RingZer0.

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT