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