Nota: Crack para quem não sabe é aquele arquivo que usamos para deixar um programa original.
Aprenda como os crackers e hackers fazem os crackes dos programas.
Aviso: Não entendo nada sobre esse assunto (resumindo se quiser comentar comente mais não poderei responder suas duvidas se alguem entender do assunto e quiser te responder tudo bem) um amigo meu me mandou esse tutorial que ele achou na net estou postando mais como curiosidade porem quem quiser se aventurar no mundo dos crackers ta ai como criar seu crack.
Aprenda como os crackers e hackers fazem os crackes dos programas.
Aviso: Não entendo nada sobre esse assunto (resumindo se quiser comentar comente mais não poderei responder suas duvidas se alguem entender do assunto e quiser te responder tudo bem) um amigo meu me mandou esse tutorial que ele achou na net estou postando mais como curiosidade porem quem quiser se aventurar no mundo dos crackers ta ai como criar seu crack.
Utilitários:
- Win32Dasm - Diassembler ( isto é, transforma os programas em código ASM)
- Hackers View ( mais conhecido por HIEW )
Alvo:
- Cracking Challange v 1.0 - Teste "Very Very Easy" ( conjunto de utilidades para creckar )
OBS: Este aplicativo cracking Challanger foi feito especialmente para testar o cracker ele tem vários
módulos o que vou explicar é o "very very easy" , mas pra fixar bem vcs devem fazer todos , como eu
também fiz!!
INICIANDO O CRACKER:
Suponhamos que já tem tudo o que é preciso para começar. Em 1º lugar deves pôr o programa
CRACK.EXE no diretório 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 vês? Uma caixa de texto
para por a password e um botão. Tenta escrever uma password qualquer e pressiona o botão. É óbvio
que falhaste. Mas não precisas chorar. Reparaste na mensagem que apareceu na caixa de diálogo:
"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 não é? Eu sabia... No menu "Diassembler", vai em "Font... |
Select Font" e escolhes uma normal ( Arial por exemplo). Agora está melhor não está? Suponhamos
que não sabes nada de ASM, então o que vês no programa não te diz nada, mas não desesperes
porque isso não te interessa. Va no menu "Refs" e em "String data References".
Já apertaste? Então agora procura aquele texto da tal caixa de diálogo 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 diálogo. É 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 código que o programa trata de mostrar a mensagem que nós não
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 diálogo. Mas para perceberem
melhor, em ASM a parte mais interessante e importante para os crackers são os Jumps que como o
nome indica são saltos que o programa dá no código conforme certas situações (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 condição e que vai ter exatamente onde nós não queremos que ele vá.
Pegue o endereço 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 <endereço>= "Se não for igual vai para <endereço>" e Je = "Se for Igual vai para
<endereço>".
Analisemos agora esta parte do código. No endereço 0043B04D vemos que depois de uma
comparação chamada na linha anterior (pela instrução CALL) ele salta no caso de desigualdade. Não
precisamos saber o tipo de comparação, apenas temos de tirar a lógica da coisa. Se o resultado não
for igual ele vai para a mensagem errada, então só se for igual é que ele vai para a mensagem
correcta.
Já sabes o que fazer? Pois é, é fácil. Basta substituír 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 contrário terás 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
...
Não 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 comparação
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. Parabéns!!!
Se quizeres fizer um patch para creckar este programa, aqui está o código 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 não 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.
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 não 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í não é tão complicado crackear um
aplicativo, mas é um processo que requer muita paciência. 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.
aplicativo, mas é um processo que requer muita paciência. 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.