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