Você está na página 1de 9

Como desenvolvido um crack para um

software (BY:HackersBrasil)

Quem nunca usou um software pirata que atire a primeira pedra! Ok, at existem algumas
pessoas que s usam software original (guarde a pedra..) por inmeras razes como a
qualidade do produto e etc. A realidade que est mais fcil encontrar um software pirata
do que um original, talvez este at seja um dos motivos pela preferncia. Diante disso,
surge uma curiosidade: O que ou como desenvolvido um crack de um software? Nesta
matria, ensinarei como fazer engenharia reversa direto no cdigo-fonte de um programa,
utilizando desmontadores e programao em Assembly.
Antes de mais nada, a minha inteno no te incentivar a crackear programas para no
pagar pela sua licena de uso, apenas te estimular a estudar e aprender sobre
programao e software. Portanto, no me responsabilizo caso voc venha a fazer mal
uso dos aprendizados contidos aqui.
Como funciona um software
Geralmente, quando voc baixa ou compra um software com um perodo de testes (Trial)
ou pago, possvel inserir um nmero serial para valid-lo, e assim poder usar at expirar
a licena. A maioria deles, esconde os seriais vlidos dentro do prprio cdigo-fonte,
facilitando o nosso trabalho, enquanto outros fazem a validao pela Internet, tornando
tudo mais difcil. Mas como vocs sabem, nada to seguro que no possa ser
quebrado.
Para este tutorial, usaremos um software desenvolvido especialmente para ser crackeado.
Ao abrir, necessrio que digitemos um cdigo serial, mas para descobrir, vamos precisar
fazer engenharia reversa em seu cdigo-fonte e alterar algumas coisas. Esta tcnica
conhecida como Patch. Alm disso, usaremos mais dois softwares, um para desmontar o
cdigo-fonte do executvel em Assembly e outro para compilar novamente e realizar o
Patch.
Baixe os seguintes softwares (No se preocupe, no tem vrus):
Win32Dasm
Hackers View
Software teste para ser crackeado
Com o Win32Dasm vamos desmontar o executvel e ver o cdigo-fonte em linguagem de
programao Assembly, j com o Hackers View conseguiremos editar o cdigo e tornar a
salvar e executar o programa.
Crackeando o software de teste
1 Abra o Win32Dasm e no menu Disassembler, clique em Open file to
Disassemble.. Escolha o software para ser crackeado, no nosso caso o Software de
Teste baixado anteriormente.

2 Aps isso o Win32Dasm ir desmontar o programa e mostrar o seu cdigo-fonte em
linguagem de baixo nvel: Assembly. No se preocupe caso aparea vrios smbolos
estranhos na tela, iremos converter para caracteres alfa-numricos.

3 Os softwares antigos tinham algumas limitaes quanto a tipografia, por este motivo os
caracteres podem ter aparecido em formato de smbolos, como na imagem acima. Para
corrigir, precisamos substituir a fonte padro usada pelo Win32Dasm, para isso, v no
menuDisassembler e no sub-menu Font.. clique em Select Font. Selecione uma fonte de
forma que os caracteres apaream corretamente. (Eu escolhi a Myriad Pro).

4 Agora possvel ler e compreender o cdigo-fonte do programa. No se preocupe com
todo este cdigo, no necessrio que voc se torne um programador ou estude a fundo
esta linguagem (Apesar que seria bom). Minimize o Win32Dasm.


5 Agora, vamos abrir o programa teste.exe que baixamos anteriormente. Veja que este
programa foi desenvolvido para que voc tente crackea-lo, em vrios nveis de dificuldade.
Eu vou ensinar a crackear no nvel Very Very Easy (Muito fcil), depois disso voc ser
capaz de passar nos prximos nveis por conta prpria.


6 Selecione a opo Very Very Easy. Ir surgir uma tela para que voc digite um cdigo,
como num programa qualquer que voc precisa inserir um serial para que ele ative. Digite
qualquer coisa e clique no boto OK. Obviamente, o seu cdigo no ser aceito (a no ser
que voc advinhe o cdigo certo hehe) e ir surgir esta mensagem:

7 exatamente isso que ns precisamos. Copie esta mensagem Sorry, not the right
one try again !, pois atravs dela iremos procurar em qual segmento/offset da Memria
RAM este trecho de cdigo esta sendo executado e assim podemos editar o cdigo-fonte
para aceitar qualquer cdigo digitado.
Para ficar mais claro, a Memria RAM do computador dividida em segmentos de
64Kbytes. Cada segmento possui outros segmentos sequenciais dentro dele, com 16
bytes. Para acessar estes segmentos internos, necessrio fornecer a posio desejada
dentro do segmento principal, o Offset. Veja por exemplo o endereo de
memria 0:13Ah, significa que ele se encontra fisicamente no segmento zero e na posio
(Offset) 13A.
8 Aps esta breve introduo sobre o funcionamento da Memria RAM de um
computador, continuamos com o processo de crack do programa teste. Abra novamente
o Win32Dasmque estava minimizado, clique no menu Refs e na opo String Data
References.


9 Ir aparecer uma lista de Strings (texto) encontradas no cdigo-fonte do programa
alvo. Encontre a String Sorry, not the right one try again ! que vimos anteriormente,
d dois cliques nela e aps isso clique no boto close

10 Estamos no trecho de cdigo em que a mensagem de erro ao digitar uma senha
errada mostrada. Olhe na linha de cima onde esta mensagem foi encontrada, isto
um Jump Code, onde feito o seguinte teste: Se a senha for vlida, pule para este
trecho, seno pule para este trecho do cdigo. Precisamos copiar o Offset que est nele,
pois este o endereo onde esta a validao da senha digitada, que iremos manipular. O
Offset este:43B04D, que equivale ao endereo completo com o registrador
DX:43B04D.


11 Aps copiar o Offset do Jump, vamos localizar o trecho de cdigo referente ele.
Clique no menu Goto e na opo Goto Code Location. Na janela que ir se abrir, digite o
endereo de memria obtido anteriormente: 43B04D e clique em OK. Estamos agora no
trecho do programa que responsvel por fazer a validao da senha correta e por
mostrar aquela mensagem de erro (vista anteriormente).

Vamos analisar um trecho deste cdigo:
Neste trecho de cdigo chamado (call) a comparao se o cdigo digitado igual ao
cdigo correto
:0043B048 E8F789FCFF call 00403A44
J neste trecho de cdigo, o programa mostra a mensagem de erro, caso esteja errado
(JNE)
:0043B04D 750C jne 0043B05B
Caso esteja certo, mostrada a mensagem: Right on ! told you too easy Try the
next one !. O que precisamos fazer alterar o JNE por JE, dessa forma eu estou dizendo
ao programa para aceitar qualquer cdigo digitado, no importando qual seja. Mas para
alterarmos, precisamos do programa Hackers View, baixado anteriormente no incio desta
matria. Copie o Offset que est o JNE para ser alterado, est no rodap do
programa:3A44D.
12 Copie o programa alvo teste.exe para a mesma pasta do Hackers View. Aps
isso,arraste o teste.exe para dentro do programa Hackers View (hiew32demo.exe).
Com isso, o Hackers View ser aberto.


13 Aps o programa Hackers View ser aberto, aperte F4 (selecionar modo),
depois F3 (Hex) e por fim F5 (Goto). Digite o endereo Offset copiado
anteriormente: 3A44D e d o Enter. Estamos visualizando agora o mesmo trecho de
cdigo onde encontramos o valor JNE.

14 Aperte F3 (Editar) e altere o valor 750C por 740C. 750C o equivalente em
hexadecimal para JNE, precisamos alterar para 740C, que representa o JE. Aps alterar,
aperta F9 (recompilar) e F10 (fechar). O programa ser automaticamente fechado. Pronto,
o software teste foi crackeado, vamos testar. Abra novamente o teste.exe (que voce
copiou para a pasta do Hacker View), selecione a opo Very Very Easy, digite qualquer
senha e clique em OK. Veja que agora o programa aceita qualquer senha, pois ns o
modificamos:

Terminamos aqui, voc pode continuar o seu aprendizado estudando os desafios mais
difceis, usando a mesma tcnica apresentada por mim nesta matria. A mesma tcnica
tambm pode ser aplicada em qualquer outro tipo de programa, basta um pouco de
dedicao, pacincia e estudo. Boa sorte!
Edit: O pessoal vem pedindo por comentrio e por e-mail para que eu desenvolva cracks
para softwares comerciais. E-mails e comentrios assim nem sero lidos, por favor no
perca o seu tempo.