tRINC@DO cRACKING tUTORIAL 10

 

http://thccracking.tsx.org - tHC cRACKING pAGE
http://brcrackers.cjb.net - BrCrackers

 

Crackeando o Norton Utilities 3.0 Trial

 

1.Introduτπo:

O Norton Utilities Θ uma suite de programas para  proteτπo, manutenτπo e melhoramento do desempenho de seu computador (diga-se de passagem a melhor suite). A versπo demonstraτπo, que funciona por 30 dias tem os mesmos recursos da completa menos o Live Update! e o Rescue disk.

VocΩ pode fazer o donwload procurando pelo arquivo nu3_trybuy.exe no ftpsearch ou ir atΘ o site da Symantec e fazer o download. O arquivo tem 38,6 MB, mais vale a pena, pois os programas sπo bem ·teis!

Lembre-se que se vc gostar do programa, compre a versπo completa nas lojas ;)

2. Ferramentas:

W32Dasm 8.x

Ultra Edit-32 (www.ultraedit.com)

3. Curiosidades sobre a proteτπo:

Uma coisa interessante se vc olhar no diret≤rio do Norton Utilities Θ que todos os arquivos executßveis dos programas (sd32.exe, ndd32.exe, etc.) tem o mesmo tamanho: 250.880 bytes; E que existe um arquivo *.dl_ para cada um deles!

Vamos tirar uma conclusπo disso: O programa executßvel em si na verdade Θ a rotina de proteτπo, que depois chama o executßvel de verdade que estß em *.dl_ . Como todos sπo do mesmo tamanho, concluimos que a proteτπo em si Θ a mesma pra todos, s≤ alterando alguns parametros e por isso todos os programas iniciam com a mesma nag mostrando quantos dias faltam!

4. Crackeando:

A primeira coisa a fazer Θ disassemblar, no W32Dasm, uma c≤pia de qualquer um dos arquivos executßveis. Utilize o NORTON.EXE s≤ pra bater com o tutorial.

Clique em "Strn Ref" e procure por algo que indique que o programa expirou. No caso vc encotrarß:

"Your free trial period is over. "

Clique duas vezes nessa string e vc cairß no meio da funτπo que chama a nag e verifica se estß expirado. Serß algo parecido com:

* Possible StringData Ref from Data Obj ->"Your free trial period is over. "
                                                                  ->"Please choose to buy the software "
                                                                    ->"or click on Exit to exit this "
                                                                    ->"application."

|
:004061D5 6804F54200               push 0042F504
:004061DA 6820A04300              push 0043A020
:004061DF E8ECAD0100           call 00420FD0
:004061E4 A1A0E14300              mov eax, dword ptr [0043E1A0]
:004061E9 83C408                       add esp, 00000008
:004061EC 83EC08                      sub esp, 00000008
:004061EF D9404C                      fld dword ptr [eax+4C]
:004061F2 DD1C24                      fstp qword ptr [esp]
:004061F5 50                                push eax
:004061F6 6820A04300               push 0043A020


O que temos a fazer agora Θ descobrir onde essa funτπo foi chamada e evitar que ela seja executada. Para isso, de uma olhada no c≤digo acima atΘ encontrar:

* Referenced by a CALL at Address:
|:00408BB2
|

Agora vc sabe o endereτo de onde a funτπo Θ chamada, portanto, clique em Goto -> Goto Code Location e digite 00408BB2.

VocΩ verß o seguinte:

:00408B9C 686C044300              push 0043046C
:00408BA1 68A0834300              push 004383A0
:00408BA6 E805970100              call 004222B0
:00408BAB 83C408                      add esp, 00000008
:00408BAE 85C0                          test eax, eax
:00408BB0 7507                           jne 00408BB9                                    
* Se eax <> 0 salta a funτπo
:00408BB2 E809D5FFFF             call 004060C0                                   
* Essa Θ a funτπo da nag e da expiraτπo
:00408BB7 EB05                          jmp 00408BBE

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00408B9A(C), :00408BB0(C)
|

* Possible Reference to String Resource ID=00001: "Turnkexe"
|
:00408BB9 B801000000              mov eax, 00000001

Agora vc jß sabe, eh s≤ trocar o jne 00408bb9 por jmp 00408bb9. Para isso utilize seu editor hexadecimal favorito, abra uma c≤pia arquivo NORTON.EXE, vß atΘ o offset 00007FB0 (estß escrito na barra de status do W32Dasm) e troque o valor 7507 por EB07. Salve e execute a c≤pia.

OOPS! Deu uma falha geral de proteτπo! Isso ocorreu porque alguma parte do programa tentou escrever ou ler algo num endereτo de mem≤ria invßlido. (Se vc estiver com o softice ligado para sair da falha digite R, depois exit e pressione ctrl+d).

Para descobrir onde ocorreu esse probema, vamos utilizar W32Dasm para disassemblar o arquivo c≤pia que vc acabou de modificar. Depois de disassemblado, vc terß que utilizar o W32Dasm como debuger. Para isso clique em: Debug -> Load Process -> Load

Aparecerß a janela de debug do W32dasm. Clique em "Auto Step Over" ou pressione F6. Com isso o programa serß executado passo a passo, executando as calls como um s≤ passo.

De repente o W32Dasm irß parar com a seguinte mensagem: "The thread tried to read from or write to a virtual address for which does not have appropriate access".

Alem da mensagem ele irß parar bem em cima do erro ocorrido na janela onde aparece o c≤digo. Analizando o c≤digo onde ocorreu o erro, teremos o seguinte:

:00405129 E8A2BD0100                  call 00420ED0
:0040512E 0FAFC7                           imul eax, edi                                         
* Multiplica EAX por EDI
:00405131 0FAFC6                           imul eax, esi                                          
* Multiplica EAX por ESI
:00405134 83C404                            add esp, 00000004
:00405137 85C0                                test eax, eax
:00405139 C70064000000                mov dword ptr [eax], 00000064
            * O Erro ocorreu aqui! Por que ao tentar mover o valor para eax, o endereτo era invßlido.

Analizando a rotina call 00420ED0 com o softice, descobri que ela retorna o endereτo certo de eax e retorna edi e esi  = 0 se o arquivo executßvel for alterado ou edi e esi = 1 se o arquivo estiver como o original. Com isso na hora que eax Θ multiplicado por edi e depois por esi ele fica com endereτo igual a 0 e na hora que tenta-se mover o valor 64 pra eax ele dß o erro de proteτπo.

Nπo tenho como descrever o processo utilizado na call 00420ED0 por ser muito extenso, mais posso dizer que envolve um CRC do arquivo que estß sendo executado com um arquivo *pop.exe que estß no diretorio do norton utilities. De um "dir *pop*" no diret≤rio e vc verß que existe um arquivo pra cada executßvel. Ele faz o CRC dos arquivos e retorna edi e esi = 0 se ele estiver incorreto (executßvel alterado).

Para evitar que o problema aconteτa, troque:

imul eax, edi   por  3 nop
e
imul eax, esi   por  3 nop

Para isso entre novamente no seu editor hexadecimal, abra a c≤pia, vß atΘ o offset 0000452E e troque 0FAFC70FAFC6 por 909090909090.

Com isso, vc trocarß a multiplicaτπo por nada, ou seja, eax estarß intacto e com o endereτo correto!

Ok executando novamente o programa, ele darß outro erro de proteτπo geral, agora em outro endereτo. A funτπo Θ exatamente a mesma descrita acima:

:00405XXX E8A2BD0100                  call 00420ED0
:00405XXX 0FAFC7                           imul eax, edi                                         
* Multiplica EAX por EDI
:00405XXX 0FAFC6                           imul eax, esi                                          
* Multiplica EAX por ESI
:00405XXX 83C404                            add esp, 00000004
:00405XXX 85C0                                test eax, eax
:00405XXX C70064000000                mov dword ptr [eax], 00000064
            * O Erro ocorreu aqui! Por que ao tentar mover o valor para eax, o endereτo era invßlido.

Bom se vc quiser mudar tudo na mπo seguindo o processo de debuging no W32Dasm e anotando o endereτo do erro, talvez no ano que vem vc tenha crackeado o programa (sπo 72 checagens!), caso contrßrio, utilize o Ultra Edit 32.

A possibilidade das instruτ⌡es imul eax, edi , imul eax, esi e add esp, 0000004 aparecerem em outra parte do programa que nπo seja a checagem Θ quase nenhuma. Portanto, abra o arquivo no Ultra Edit, clique no botπo Replace Text e preencha:

Find What:       0FAFC70FAFC683C404

Replace With: 90909090909083C404

Clique em Replace All. Aparecerß uma msg dizendo que 71 itens foram trocados. Clique OK.

Salve o programa, execute e vocΩ verß que ele serß executado com sucesso! Delete o NORTON.EXE (salve uma backup se quiser) e renomeie o arquivo crackeado para NORTON.EXE.

5. Crackeando os outros programas:

Para crackear os outros programas vc nπo precisa repetir tudo dinovo. Siga os segintes passos:

Essa operaτπo deve ser repetida com os seguites arquivos:

Ndd32.exe
Sd32.exe
si32.exe
Ue32.exe
Norton.exe
Regtrk.exe
Windoc.exe
Nregedit.exe
Ncompare.exe
Optwiz.exe
AlΘm de cgmain.exe no diret≤rio do Crashguard.

Qualquer d·vida Θ s≤ mandar um e-mail para trincado@rock-br.com.br ou me contactar pelo UIN 4240719

6. Consideraτ⌡es Finais:

Como podemos ver, apesar de fßcil de quebrar, essa Θ uma boa proteτπo, que impede que e c≤digo seja alterado.

Gostaria de agradecer o HaWK, Pensador, ethAn, DrByte, Bzz, Net Walker! e todos os amigos que consegui escrevendo tutoriais. Valeu galera!

tRINC@DO -BRCrackers 16/04/1999