Animagic GIF 1.02 |
|
|
30/07/2000 |
By "Pincopall" |
|
Published by Quequero |
||
|
||
UIC's form |
|
UIC's form |
Difficolt� |
(X)NewBies ( )Intermedio ( )Avanzato ( )Master |
Prima eliminiamo la protezione a tempo con scadenza a trenta giorni e poi ci facciamo anche registrare dal programma con un nome ed un seriale qualunque.
Introduzione |
Tools usati |
URL o FTP del programma |
Notizie sul programma |
Essay |
Dunque lanciamo il programma e subito salta fuori una Message Box che ci informa che questa � una versione trial, che la stiamo usando da un tot di giorni sui 30 previsti, e che ci mprega di registrare il programma anche on-line. Dunque questo � il nostro primo obiettivo: l'eliminzaione della protezione a tempo.
Dunque apriamo WDasm (lo so che � meglio IDA , ma ora non ce l'ho sottomano) e cerchiamo con "Find Text" il valore esadecimale 0000001E (corrispondente a 30 in numeri decimali) e segnamoci gli indirizzi nei quali 0000001E viene confrontato con qualcosa. Ci saranno tre di questi compare: uno a 0041D3E2, uno a 0041D403 ed uno a 0040F386:
Dunque, in 0041D3E2 confronta 0000001E con il numero dei giorni da cui noi stiamo usando il programma, voi direte "Oh Pinco e come fai a sapere che in 00473394 ci st� propprio il numero dei giorni ?!?" e io vi risponder�: "Basta aprire SoftIce e guardare cosa � contenuto in 00473394, e cos� vi accorgerete che l� dentro c'� proprio quello", inoltre come vedete se il numero dei giorni � minore di 30 salta la funzione subito sotto che ci porter� a :
:0041D3EF BA01000000 mov edx, 00000001 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0041D3ED(U) | :0041D3F4 88158F334700 mov byte ptr [0047338F], dl :0041D3FA 803D8D33470000 cmp byte ptr [0047338D], 00 :0041D401 7509 jne 0041D40C :0041D403 833D943347001E cmp dword ptr [00473394], 0000001E <--confronta il :0041D40A 7F04 jg 0041D410 numero di giorni con 30
Come vedete se il velore dei giorni sar� maggiore di trenta c'� un bel jg (lump if
greater) che ci porter� al messaggio di errore. Dunque, ci sono vari modi per eliminare
questa protezione a tempo, io ho scelto quello che per me � il pi� elegante, ovvero
andare a modificare la call all'indirizzo 0041D3CE che determina il valore di eax, ovvero
dei giorni di uso, infatti vedete che il contenuto di 00473394 non � nient'altro che il
vontenuto di eax per merito di quel mov a 0041D3D4. Andiamola dunque ad esaminare:
Jump at Address : 0041D3ED(U) | | :0041D712 85FF test edi, edi :0041D714 7507 jne 0041D71D <---- salta se edi � diverso da edi :0041D716 B80F270000 mov eax, 0000270F <---- da un valore ad eax :0041D71B EB2E jmp 0041D74B <---- salta alla fine della call
questa � dunque la parte che ci interessa, infatti il salto incondizionato ci porta direttamente alla conclusione della call, dunque questa � la parte che ci interessa essendo l'ultima in cui viene toccato eax, a questa parte ci si arriva per forza poich� qui ci portano, come potete vedere, due salti incondizionati, per arrivare per� a quel mov e di seguito a quel jmpo, bisogna togliere di mezzo quel jne 0041D71D, e per farlo, che cosa meglio di un bel nop? andiamo dunque a cambiare con l'editor esadecimale quel 7505 con un bel 9090. Ora dunque dobbiamo mettere in eax un valore che riamrr� fisso e che quindi ci far� diventare eterna la versione trial, dunque andiamo di nuovo nel nostro editor esadecimale e cambiamo quel B80F270000 con un bel B800000000 (se volete che il programma pensi che lo stiate usando da zero giorni, ovvero per la prima volta) oppure con un bel B801000000 se volete che pensi di essere usato da un giorno e cos� via, ovviamente tale numero deve essere minore o uguale a 0000001E. Ok, il primo passo l'abbiamo fatto, abbiamo tolto la protrezione a tempo e il programma, se abbiamo messo zero giorni di utilizzo, ci dar� anche il ben arrivati, altrimenti ci dir� che lo stiamo usando da un tot di giorni (che rimarr� fisso) sui trenta previsti.
Noi per� vogliamo di pi�!! Vogliamo anche la registrazione vero?
Bene, una volta entrati nel programma andiamo su Help e clikkiamo su "Enter name and password", dunque inseriamo il nostro nome: "Pincopall", la nostra compagnia: "Pincoz s.p.a." ed il nostro serial "11223344", clikkiamo ed ovviamente compare la beggar off che ci dice che la password non � valida e che per questo la registrazione non pu� avvenire. Bene, ora riapriamo WDasm e cerchiamo sia il messaggio di errore della beggar off che il messaggio che ci apparirebbe se il codice da noi immesso fosse giusto, ed infatti in "String Data Reference" dal men� Refs troviamo un bel " Thank you for registering " nonch� un bel " Registration failed: invalid password ". Okkei dunque clikkiamo due volte su quest'ultimo ovvero sul messaggio della beggar off, e vediamo questo:
.........
Okkei allora eccoci a tale saltino:
:0042029D 56 push esi :0042029E E8AAD2FFFF call 0041D54D :004202A3 59 pop ecx :004202A4 A28D334700 mov byte ptr [0047338D], al <-- muove il contenuto di al :004202A9 803D8D33470000 cmp byte ptr [0047338D], 00 <-- e lo confronta con 0 :004202B0 7470 je 00420322 <--- salta se al=00 :004202B2 C6059033470000 mov byte ptr [00473390], 00 :004202B9 681C304700 push 0047301C :004202BE 687D314700 push 0047317D
Allora, come vedete si tratta di un jump if equal che se salta, quindi se il primo byte di 004733BD, che poi non � altro che il contenuto di al, � uguale a zero, ci manda al messaggio di errore. Dunque, qui potremmo fare in due modi, o noppando quel bel saltuzzo l� sostituendo quel 7470 con un bel 9090, oppure potremmo sostituiree il valore di al che viene determinato da quella call a 0042029E con un valore fisso ovviamente diverso da zero, il ragionamento che va fatto qui � uguale a quello di prima che riguardava la protezione a tempo. Se infatti tale salto non viene eseguito ecco che arriviamo di filata al messaggio di ringraziamento.
Ok, dunque ora siamo anche registrati, se per� avviamo il proggy, vediamo che nonostante ora ci prenda qualsiasi seriale e ci consideri registrati, ci viene sempre mostrata la Message Box che ci dice da quanti giorni stiamo usufruendo gratuitamente del programma. E a noi questa Message Box da fastidio vero?
Bene: ( per quelli che hanno risposto "no") : tenetevelo cos�.
Bene: ( per quelli che hanno risposto "si") : continuate a seguire 'sto tute. =)
Allora, andiamo a cercare la call che ci fa apparire tale Message Box all'inizio del programma, il codice che dovrei riportare qui lo ho gi� riportato sopra, la call in questione � infatti la chiamata a 0041\D54D che si trova all'indirizzo 0041D3C2, per non farapparire pi� tale message box ci basta solo noppare la chiamata, ci apparir� ora, una volta noppata la call, all'inizio del programma una nuovaMessage Box che ci informer� che questo programma � registrato a nome di "Pincopall" della "Pincoz s.p.a." e sotto vedremo che ci chieder� : " Volete che io non appaia pi� all'inizio del programma ? ", bene qui potete ovviamente fare quello che volete, per� secondo me � bello vedere che un programma si ritiene registrato e si vanta di esserlo ;-)
Bene, con questo abbiamo finito, ora abbiamo eliminato la protezione a tempo, ci siamo registrati ed abbiamo fatto si che il programma ci dicesse di essere registrato.
Alla prossima, ciauzzzzzzz
Pincopall
|
Spero di essere stato chiaro, comunque se ci sono dei problemi la mia e-mail la conoscete. Per concludere voglio salutare tutti i componenti della UIC e della ML nonch� del canale #crack-it. Ringrazio in particolar modo _ph0b0s_ (che in questi giorni mi sopporta sul canale hihihi), e AndreaGeddon (che d� una mano a ph0b0s ;-)).
Un saluto mui spieciale va anke a Bebos, Nio (Forza ragazzi che il progetto andr� in porto !! ) e Desideria.
Disclaimer |
UIC's page of reverse engineering, scegli dove andare: |
Home Anonimato Assembly ContactMe CrackMe Forum Iscrizione |
Lezioni Links Linux NewBies News Playstation |
Search Tools Tutorial UIC Faq XXX Page |
UIC |