Você está na página 1de 4

[Tutorial] Aprenda a criar um Crack

TM DVIDAS DE COMO CRIAR UM CRACK ENTO RESOLVI FAZER ESTE


TPICO!!

Utilitrios:
- Win32Dasm - Diassembler ( isto , transforma os programas em cdigo ASM)
- Hackers View ( mais conhecido por HIEW )
Pegue estes programas aqui:
http://skyscraper.fortunecity.com/valve/256/ckdownload.htm

Alvo:

- Cracking Challange v 1.0 - Teste "Very Very Easy" ( conjunto de utilidades para creckar )
Download aqui:
- http://skyscraper.fortunecity.com/valve/256/ckclg.zip ( 168 kb )
OBS: Este aplicativo cracking Challanger foi feito especialmente para testar o cracker ele tem vrios
mdulos o que vou explicar o "very very easy" , mas pra fixar bem vcs devem fazer todos , como eu
tambm fiz!!

INICIANDO O CRACKER:
Suponhamos que j tem tudo o que preciso para comear. Em 1 lugar deves pr o programa
CRACK.EXE no diretrio do HIEW e j vais saber por qu.
Um bom cracker deve conhecer sempre muito bem o funcionamento do seu alvo, e por isso, vamos
abrir o CRACK.EXE. Carregas na parte onde diz "Very Very Easy". O que vs? Uma caixa de texto
para por a password e um boto. Tenta escrever uma password qualquer e pressiona o boto. bvio
que falhaste. Mas no precisas chorar. Reparaste na mensagem que apareceu na caixa de dilogo:
"Sorry not the right one - try again" (ou parecido)? Guarde esta mensagem. Feche o programa e agora
abre o WIN32DASM. Fazes um "Open file to diassemble" ao programa CRACK.EXE e espera. S
aparecem coisas esquesitas no programa no ? Eu sabia... No menu "Diassembler", vai em "Font... |
Select Font" e escolhes uma normal ( Arial por exemplo). Agora est melhor no est? Suponhamos
que no sabes nada de ASM, ento o que vs no programa no te diz nada, mas no desesperes
porque isso no te interessa. Va no menu "Refs" e em "String data References".
J apertaste? Ento agora procura aquele texto da tal caixa de dilogo que apareceu quando voc
erraste "Sorry not the right one - try again" procuras na letra "S". Aperte duas vezes nele e fecha a
caixa de dilogo. suposto veres isto:
...
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043B04D(C)
|
* Possible StringData Ref from Code Obj ->"Sorry, not the right one - try "
->"again !"
|

:0043B05B B8F0B04300 mov eax, 0043B0F0


:0043B060 E84788FFFF call 004338AC
:0043B065 8B8358020000 mov eax, dword ptr [ebx+00000258]
:0043B06B 8B10 mov edx, dword ptr [eax]
:0043B06D FF5278 call [edx+78]
...
Como podes ver, nesta parte do cdigo que o programa trata de mostrar a mensagem que ns no
queremos. Mas aqui, pouca coisa nos interessa, a parte que mais nos interessa :
...
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043B04D(C)
...
nesta parte em que vemos o que "causa" o aparecer desta caixa de dilogo. Mas para perceberem
melhor, em ASM a parte mais interessante e importante para os crackers so os Jumps que como o
nome indica so saltos que o programa d no cdigo conforme certas situaes (se for igual a, se for
diferente de...) tipo um GOTO e um IF juntos. Aqui mostra-nos que existe um salto que depende de
uma condio e que vai ter exatamente onde ns no queremos que ele v.
Pegue o endereo do JUMP que no nosso caso : 43B04D , aperte no menu "GOTO" e em "GOTO
CODE LOCATION" ir abrir uma caixa de dialogo , selecione o campo de texto digite 43B04D e click
em localizar , aperte duas vvezes na seta para cima e ir aparecer isto:
...
* Possible StringData Ref from Code Obj ->"button"
|
:0043B043 BA9CB04300 mov edx, 0043B09C
:0043B048 E8F789FCFF call 00403A44 <- Compara a pass com a correcta
:0043B04D 750C jne 0043B05B <- Se pass errada vai te embora cracker[
* Possible StringData Ref from Code Obj ->"Right on ! ... told you ... too "
->"easy ... Try the next one !"
|
:0043B04F B8ACB04300 mov eax, 0043B0AC
:0043B054 E85388FFFF call 004338AC
:0043B059 EB15 jmp 0043B070
...
Antes de tudo Jne <endereo>= "Se no for igual vai para <endereo>" e Je = "Se for Igual vai para
<endereo>".
Analisemos agora esta parte do cdigo. No endereo 0043B04D vemos que depois de uma
comparao chamada na linha anterior (pela instruo CALL) ele salta no caso de desigualdade. No
precisamos saber o tipo de comparao, apenas temos de tirar a lgica da coisa. Se o resultado no
for igual ele vai para a mensagem errada, ento s se for igual que ele vai para a mensagem
correcta.
J sabes o que fazer? Pois , fcil. Basta substitur jne 0043B05B por je 0043B05B. Mas para fazer
isso temos de usar o HIEW. Antes de l ires, v o offset que deve tar na barra de status
do Win32dasm e escreve-o num papel. Eu ajudo-te. o 3A44D.
Agora fecha o Win32Dasm, abre uma linha de commandos do MS-DOS,escreve cd
<directoria_do_hiew> e j nesta directoria escreve hiew crack.exe (o CRACK.EXE deve estar
na mesma direcoria do HIEW, caso contrrio ters de escrever hiew
c:\<directoria_do_crack.exe>/crack.exe). Dentro do HIEW carrega em F4 e depois em F3.
Deve ver algo como isto:
...
00000000: 4D dec ebp
00000001: 5A pop edx
00000002: 50 push eax
00000003: 0002 add [edx],al
00000005: 0000 add [eax],al
00000007: 000400 add [eax][eax],al

0000000A: 0F00FF ??? di


0000000D: FF00 inc d,[eax]
0000000F: 00B800000000 add [eax][000000000],bh
00000015: 0000 add [eax],al
00000017: 004000 add [eax][00000],al
...
No te enerves. Carrega no F5 (GOTO) e escreve o Offset. Ir aparecer o seguinte:
...
0003A43B: E894FEFDFF call 00001A2D4 ---------- (1)
0003A440: 8B45FC mov eax,[ebp][-0004]
0003A443: BA9CB04300 mov edx,00043B09C
0003A448: E8F789FCFF call 000002E44 ---------- (2) <- Chama a comparao
0003A44D: 750C jne 00003A45B ---------- (3) <- Se for errado, vai-te embora bad boy
0003A44F: B8ACB04300 mov eax,00043B0AC
0003A454: E85388FFFF call 000032CAC ---------- (4)
0003A459: EB15 jmps 00003A470 ---------- (5)
...
Agora carrega em F3 (EDIT), substitui o 75 (cod HEX para jne) por 74 (cod HEX para je) e carrega em
F9 (ACTUALIZAR). Faz F10 e arranca o CRACK.EXE e tenta introduzir uma pass qualquer. Que tal?
Deu!!!!! Conseguiu crackear o teu 1 programa. Parabns!!!
Se quizeres fizer um patch para creckar este programa, aqui est o cdigo em PASCAL:
--------------------------------------------<>-----------------------------------------program Cracking;
uses Crt;
Const A: Array[1..1] of Record
A : Longint;
B : Byte;
End =
((A:$3A44D;B:$74));
Var Ch:Char;
I:Byte;
F:File;
FN:file of byte;
Size:longint;
Begin
Writeln('Patch para o Cracking Challange v1.0 - VVE');
writeln('By Znet - XpT'99');
Assign(F,'CRACK.EXE');
Reset(F,1);
If IOResult <> 0 then
begin
writeln('Ficheiro no encontrado');
halt(1);
end;
For I:=1 to 1 do
Begin
Seek(F,A[I].A);
Ch:=Char(A[I].B);
Blockwrite(F,Ch,1);
End;
Writeln('Patch colocada com sucesso !');
End.
--------------------------------------------<>------------------------------------------

OBS: Bem galera isso a no to complicado crackear um


aplicativo, mas um processo que requer muita pacincia. DICA:
Basta achar o JUMPING que est fazendo a checagem do serial e
transformar a JNE que est negando o serial em uma JE que ir
afirmar qualquer serial que voc por l. Para isto basta substituir os
cinco pelos quatro que tiverem no numero da JNE.

VISITE:
www.sempredownloadfull.blogspot.com
O melhor Contedo da Internet pra Voc!

NAO DEIXE DE NOS VISITAR NOVAMENTE