AMU Q/95 3.10 CRACK


BY AESCULAPIUS



                    AMU Q/95 3.10 CRACK BY AESCULAPIUS

                    ----------------------------------



Ciao a tutti. Vi mostrerò nelle prossime righe come crackare AMU W/95

3.10 usando il metodo  'dead listing' . Naturalmente , dovrai prima leggerti 

, la lezione 9.3 del Maestro +ORC lesson 9.3. Avrai anke bisogno di un buon disassembler,

come w32dasm7 (già patchato da uno degli studenti del famoso +ORC ).



        AMU (automated maintenance utility) è un eccellente applicazione per

controllare delle aree di files e contenente alcuni utlissimi messaggi automatici che 

alleggerirannoe il carico giornaliero del sysop quando stai facendo correre un sistema BBS. 

Puoi trovarne una copia a http://www.isonline.com/amu. Installa il programma come di solito.



Comincia a disassemblare il file amuw.exe. Avrai un file di testo abbastanza grande.

Caricalo nel tuo word peocessor preferito. Ok, stai facendo un ottimo lavoro. Ora

puoi fare un po' di analisi ZEN. Cosa cerchi? AMU è protetto con due diversi metodi

, il primo , consiste in un avviso ke dice 'unregistered for nn days'  ogni volta ke fai correre il programmae

 Il primo giorno l'avviso recita:" Unregistered for (1 day)". Il giorno dopo

reciterà :" Unregistered for (nn) days", dove 'nn' è il numero di giorni

da cui stiamo usando il programma senza registrazione. Il secondo metodo ès un limite

di tempo di 30 giorni, dopo ke il programma finirà di lavorare

(Goddamn it!). Tu puoi dedurre anke solo usando la tuo sostanza cerebrale un po'

più del solito ke questo programma si registra tramite uno speciale

key file kiamato 'amu.key'. Come lo so?? Leggendo il manuale d'istruzioni :).

Ora sappiamo cosa stiamo cercando, carikiamo il file d testo nel nostro word processor

preferito e clikkiamo sul pulsante "search", digitando le seguenti stringhe da trovare :"amu.key"

e 'Licensed'. Avremo un segmento di codice moolto interessantequando troveremo 'amu.key'. Eccolo qui sotto riportato:



:0041B4AC 68C0000000              push 000000C0

:0041B4B1 E8FBDD0100              call 004392B1

:0041B4B6 53                      push ebx          ; pusha i vari registri...

:0041B4B7 51                      push ecx      

:0041B4B8 52                      push edx

:0041B4B9 56                      push esi

:0041B4BA 57                      push edi

:0041B4BB 55                      push ebp

:0041B4BC 89E5                    mov ebp, esp

:0041B4BE 81EC94000000            sub esp, 00000094

:0041B4C4 8945FC                  mov [ebp-04], eax ;  [ebp-04]  potrebbe 

:0041B4C7 8B45FC                  mov eax, [ebp-04]   tessre la locazione di memoria

:0041B4CA 057B190000              add eax, 0000197B   dove è situato

:0041B4CF 50                      push eax            l' unregistered 'days counter' ?
                                                     


* Possible StringData Ref from Data Obj ->"%sAMU.KEY"



        Molto interessante, ma a questo punto non sono ancora sicuro di niente. Starei

mentendo come molti altri credo facciano, se dicessi: "sto usando solamente, e

ripeto solamente, il 'dead listing approach' per risolvere questo crack e posso dire senza dubbi

cosa sta contenendo o facendo questo registro". Una cosa che voi non sapete è che questi ke lo dicono avevano già 

fatto correre il programma sotto SoftIce, conoscendo quindi già cosa è contenuto in ogni registro ed in ogni

locazione di memoria. In questo modo, le loro analisi sembrano essere quelle di un genio.  Non ho mai fatto correre questo

 programma in  softice, quindi le mie ipotesi riguardo quello ke è contenuto nei vari registri o nelle locazioni
 
 di memoria potrebbero essere sbagliate di grosso, ma anke se mi sbaglio, sono sincero! 

 Puoi caricare questo programma in SoftIce e crackarlo con una mano dietro la schiena ed
 
 un okkio kiuso, ma quasto non è il punto, quello ke stiamo cercando di provare è ke
 
 il 'dead listing approach' è la migliore strategia quando ti trovi di fronte a protezioni fatte con un Nag-screen

e l'unica cosa ke vuoi fare è un crack ben riuscito.

Ora,  ke penso ke il codice  in questa prima parte di codice, istia cercando

nella directory di AMU il file amu.key, se lo trova, allora fa partire delle sequenze

matematiche per convalidare la kiave. Se la kiave è falsa, probabilmente svolge

l'esecuzione dentro una delle call di questo segmento di codice o di uno ke non abbiamo 

ancora visto.


       Ora, andiamo a vedere alla nostra prossima locazione. Clikkate sul bottone "search" del vostro

word processor e cercate la stringa: 'Licensed'. 

Questo sarà quello ke avrete:



:0041B679 B8E4204500              mov eax, 004520E4

:0041B67E 50                      push eax

:0041B67F 8B45FC                  mov eax, [ebp-04]

:0041B682 057B190000              add eax, 0000197B

:0041B687 50                      push eax



* Possible StringData Ref from Data Obj ->"%s%s"

                                  |

:0041B688 B8E7204500              mov eax, 004520E7

:0041B68D 50                      push eax

:0041B68E 8D459C                  lea eax, [ebp-64]

:0041B691 50                      push eax

:0041B692 E81EDE0100              call 004394B5

:0041B697 83C410                  add esp, 00000010

:0041B69A BA80010000              mov edx, 00000180

:0041B69F 8D459C                  lea eax, [ebp-64]

:0041B6A2 E876DD0100              call 0043941D

:0041B6A7 8D459C                  lea eax, [ebp-64]

:0041B6AA E8A9DD0100              call 00439458

:0041B6AF 8B45FC                  mov eax, [ebp-04]

:0041B6B2 83C028                  add eax, 00000028

:0041B6B5 50                      push eax



* Possible StringData Ref from Data Obj ->"Licensed to %s"



Come puoi vedere, siamo in mezzo ad un codice ke viene eeseguito quando il programma

corre nella sua versionet registratae. Questo segmento comincia a :0041B679,

prima di questa instruzione c'è un unconditional jump ke impedisce

al programma di eseguire questa parte senza l'ausilio di un conditional

jump. Quello ke dobbiamo fare è steppare un po' indietro per trovare

un salto condizionato, ke porterà all'esecuzione di questa benedetta area ke comincia

a :0041B679 e ke ci fa evitare il salto incondizionato a :0041B677. Steppando all'indietro

troveremo quello ke stiamo cercando:



:0041B4D0 B89A204500              mov eax, 0045209A

:0041B4D5 50                      push eax

:0041B4D6 8D459C                  lea eax, [ebp-64]

:0041B4D9 50                      push eax

:0041B4DA E8D6DF0100              call 004394B5

:0041B4DF 83C40C                  add esp, 0000000C

:0041B4E2 8D559C                  lea edx, [ebp-64]

:0041B4E5 B89C394600              mov eax, 0046399C

:0041B4EA E8B1CB0000              call 004280A0

:0041B4EF 89C2                    mov edx, eax

:0041B4F1 8D857CFFFFFF            lea eax, [ebp+FFFFFF7C]

:0041B4F7 E8E9DF0100              call 004394E5

:0041B4FC 8D957CFFFFFF            lea edx, [ebp+FFFFFF7C]

:0041B502 B86E344600              mov eax, 0046346E

:0041B507 E8F666FFFF              call 00411C02

:0041B50C 8D957CFFFFFF            lea edx, [ebp+FFFFFF7C]

:0041B512 B86E344600              mov eax, 0046346E

:0041B517 E88166FFFF              call 00411B9D

:0041B51C 80BD7CFFFFFF00          cmp byte ptr [ebp+FFFFFF7C], 00 ; Flag?



:0041B523 7415                    je 0041B53A                     ; salta a

:0041B525 8D957CFFFFFF            lea edx, [ebp+FFFFFF7C]           :0041B53A

:0041B52B 8B45FC                  mov eax, [ebp-04]                 dove un 

:0041B52E 83C028                  add eax, 00000028                 salto incondizionato

:0041B531 E899DD0100              call 004392CF                    ci porta via dal nostro

:0041B536 85C0                    test eax, eax                     dal nostro amato

:0041B538 7502                    jne 0041B53C                        :0041B543  jump                                                             

    

                                          
* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0041B523(C)

|

:0041B53A EB0D                    jmp 0041B549 ; Questo  jump porta il

                                                 programma alla zona di guerra :)

                                                 (unregistered segments

                                                 of the code)



* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0041B538(C)

|

:0041B53C 8B45FC                  mov eax, [ebp-04] ; Il contatore!!!

:0041B53F 80782800                cmp [eax+28], 00

:0041B543 0F8530010000            jne 0041B679 ; Il nostro  jump!!!



Ok, abbiamo quasi fatto. Quello ke dobbiamo fare (nel caso non ci foste ancora arrivati) 

è cambiare l'esecuzione da :0041B523 a :0041B543 e quindi, possiamo

metter un  :0041B679 dove si comincia a ballare!!!



        Perkè non fare un saltone direttamente da :0041B523 a :0041B679 ?

Perkè non si può fare un salto intrasegmentario così grande nell'assembler!!



        Procediamo: Con un buon Hex editor (Io preferisco Hiew v. 5.50 o

PSEDIT 4.4) cercate il seguente codice esadecimale:



        74158D957CFFFFFF   ; e cambiatelo per:

        EB1E8D957CFFFFFF   ; questo cambiamento sostituirà

                             l'istruzione:



        :0041B523 je 0041B53A   ; in:



	:0041B523 jmp 0041B543



        quindi cercate questa stringa:



        0F8530010000   ; e cambiatela perr:

        E93101000000   ; quaesto cambio sostituirà l'istruzione:



        :0041B543 jne 0041B679   ; in:

	

        :0041B543 jmp 0041B679



        Come potete notare, ho cambiato entrambi i salti condizionali in salti  unconditional,

 il motivo è che così non sarà importante il contenuto del contatore,

 l'esecuzione andrà sempre a finire bene (....per noi ;)) .



Ci sono talte altri parti di questo schema di protezione ke varrebbe la pena sondare

e capire. Per esempio,



:0041B715 837DFC1E cmp [ebp-04], 0000001E

:0041B719 7F06     jg 0041B721



1E Esadecimale è 30 decimale!!! 30 giorni è il nostro periodo di libero

utilizzo. Questo significa ke [ebp-04] è effettivamente il contatore...



Poco dopo, alla locazione:



:0041B728 837DFC3C                cmp [ebp-04], 0000003C

:0041B72C 7F06                    jg 0041B734

  

Guardate questo:, 3C Hex è 60 decimale. Questo significa ke il programma

vi permette di utilizzare il programma per 30 giorni dopo 30 giorni di continuo uso, 

quindi il periodo di libero utilizzo è di fatto di 60 giorni, dopo i quali il programma

smetterà di funzionare. Segui il salto a to :0041B734 e capirai cosa intendo...



Ci sono migliaia di modi per crakkare questo programma, guarda il mio e prova a farne

uno tutto tuo.



Dopo tutto questo smanettare, AMU non scadrà e quando verrà fatto correre

 ti mostrerà una finestra con scritto "Registered to: il tou nome".



        Non sono un fortunato studente di +ORC anke se mi piacerebbe esserlo. Purtroppo

ho saputo della sua  +HCU troppo tardi. Comunque, posso sempre dividere la mia buona

conoscenza di cracking con +ORC e i +suoi studenti.



Se questo testo sarà pubblicato scriverò un'altra lezione dove vi insegnerò

alcune nuove tecnike di cracking.



			 bye bye!





                                            Aesculapius...            

                                            aesculapius@cyberjunkie.com

Aesculapius 1997. All rights reversed.