You are on page 1of 5

[Tutorial] Aprenda a criar um Crack

por WNUNESA em 04 Jun 2006, 15:50

BEM GALERA ANDEI DANDO UMA OLHADA AQUI NO FORUM E PERCEBI QUE MUITOS 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 tambem fiz!!

INICIANDO O CRACKER:
Suponhamos que j tens tudo o que preciso para comear. Em 1 lugar deves pr o programa CRACK.EXE no diretorio do HIEW e j vais saber porqu. 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 t 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 interessate 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 exactamente 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. Deves 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 !!!!! Conseguiste crackear o teu 1 programa. Parabns !!!. Se quizeres fazer 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 vc por l . Para isto basta substituir os 5 pelos 4 que tiverem no numero da JNE.

You might also like