Como crackear o Magic DVD Ripper

Started by Anonymous, 28 de February , 2007, 06:32:19 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Anonymous

Bem galera, depois de um tempinho sumido, vou tentar voltar novamente (se o tempo faltar).

Como alguns sabem, sempre gostei bastante de engenharia reversa...

Esses dias tava ripando um DVD e queria passar um DVD9 para 2 DVD5, na busca encontrei um programa fantástico chamado Magic DVD Ripper mas que é pago... (claro, existem outros grátis que fazem a mesma coisa... mas queria este e pronto.)

Uma das limitações dele é que você só pode usar ele 4 vezes antes dele expirar.

Bem, assim que eu chegar em casa vou tentar postar 2 métodos para se crackear este programa (claro, tem o 3° método que é criando um keygen... mas isso fica mais para frente.)

Bem, até breve galera.

Abraços

insanity

Cara tambem curto reversing, hehe
quero ver seu poste, aguardando ....

Anonymous


Anonymous

Bem, como disse, aqui estou eu postando como crackear o Magic DVD Ripper com 2 formas diferentes.

Este aqui não vai ter figuras como nos passados por quê não tenho mais tanto tempo sobrando.

Material necessário:

Um Heditor Hexadecimal (Gosto muito e sempre usarei o Hiew para windows...)

Um debugger (gosto muito do Ollydbg para Windows... Mas se aparecer um melhor, eu mudo!)

Abra o Olly para analizarmos como funciona o programa rodando.

Clique em File > Open > MagicDVDRipper.exe (ou clique F3 e abra o MagicDVDRipper.exe).

Bem, primeira coisa que vemos é que ele foi feito com Borland C++.

Tá, agora clique com o botão direito do seu mouse na tela principal, clique em Search for e logo após em "All referenced text strings" ou clique em View, ao lado de File, e clique em References.

Bem, após você rodar o programa e digitar um User Name e um código de registro qualquer, você viu que dá uma mensagem tipo:

"Register Code is not correct!
blablabla"

Pois bem, nas referências clique com o botão direito e clique em Search for text. Digite "Register" e procure a mensagem que tá e ponha um Breakpoint clicando com F2. Isto servepara quando o programa chegar neste ponto, ele parar de rodar.

Excelente. Agora volte para a tela principal do Olly e pressione F9 para o programa rodar normalmente.

Ele vai dar um erro uma certa ora, aperte shift e F9 para continuar e pronto.

Agora na telinha falando que está é uma versão trial, você só pode usar 4 vezes, clique em Register e digite Rafael no usuário e 1234567 no código de registro e clique em OK.

Agora olha que legal, o Olly parou o programa bem neste ponto para você! Legal né?

Vamos subir um pouquinho e dar uma analizada no que está acontecendo.

0041C13D   . 8A4E 05        MOV CL,BYTE PTR DS:[ESI+5]
0041C140   . 3A4D AC        CMP CL,BYTE PTR SS:[EBP-54]
0041C143   . 75 26          JNZ SHORT MagicDVD.0041C16B
0041C145   . 8A46 04        MOV AL,BYTE PTR DS:[ESI+4]
0041C148   . 3A45 AD        CMP AL,BYTE PTR SS:[EBP-53]
0041C14B   . 75 1E          JNZ SHORT MagicDVD.0041C16B
0041C14D   . 8A56 12        MOV DL,BYTE PTR DS:[ESI+12]
0041C150   . 3A55 AE        CMP DL,BYTE PTR SS:[EBP-52]
0041C153   . 75 16          JNZ SHORT MagicDVD.0041C16B
0041C155   . 8A0E           MOV CL,BYTE PTR DS:[ESI]
0041C157   . 3A4D AF        CMP CL,BYTE PTR SS:[EBP-51]
0041C15A   . 75 0F          JNZ SHORT MagicDVD.0041C16B
0041C15C   . 8B45 B8        MOV EAX,DWORD PTR SS:[EBP-48]
0041C15F   . C780 4C020000 >MOV DWORD PTR DS:[EAX+24C],1
0041C169   . EB 3E          JMP SHORT MagicDVD.0041C1A9

Ummm... aí está a maldita verificação do serial... Observe que na primeira linha ele move o conteúdo de tamanho byte (uma letra) de [ESI+5] (na verdade ele copia, não move nada) para CL. Depois compara CL com o conteúdo Byte de EBP-54, se não for zero (JNZ siginifica Jump Not Zero. Lembra que em algo tipo strcmp() ele apenas diminui o valor hexadecimal da sequência de letras da frase 1 com a frase 2? pois é, se der zero é pq o valor das duas são iguais certo? mesma coisa aqui... se for diferente de zero, as letras são diferentes!) cai na mensagem de erro.

Beleza, primeira forma de crackearmos este programa. Pegue o editor Hexadecimal e altere todos os JNZ para JE.

Mas esta forma é tão simples que nem vale a pena ser mencionada... mas mencionei para aqueles que não tão entendendo nada e apenas querem dizer que crackearam um programa comercial!!!!

Beleza, vamos analizar este programa rodando????

Vamos lá, dê um breakpoint na primeira instrução (a MOV CL,BYTE PTR DS:[ESI+5]).

Aperte F9 para seu programa voltar a rodar.

Agora tente registrar seu programa novamente.

Rafael

1234567

Observe que ele vai mover nosso 6 para CL e comparar com 0, se for diferente, mostra erro...

Então temos nossa primeira informação. O sexto char do registro tem que ser 0!

Então vamos tentar agora 1234507.

Beleza! Passamos da primeira checagem! Vamos para a segunda.

Ele vai mover nosso 5 para AL e comparar com 2...

Agora pergunto, este 2 é o do nosso próprio serial? ou seja, o segundo e quinto chars tem que ser iguais?

Não, este 2 veio de uma série de contas que são feitas com o User Name que você põe.

Neste momento vamos apenas alterar nosso 5 para 2.

Então agora sabemos que nosso serial tem que ser algo tipo: ----20-

Legal, vamos continuar.

Agora ele move zero (\x00) para DL e compara com 4... estranho... Pq ele moveria 0???

Vamos mudar um pouco... vamos colocar no serial algo tipo 123420789.

Agora ele move CF... Muito estranho ainda...

Bem, olhe o nosso serial no Hex Dump (clique com o botão direito no registrador ESI e clique em Follow in Dump).

Olhe que tem algo assim: 31 32 33 34 32 30 37 38 39 00 CF 00 FC B9 CF 00 FC B9 CF ...

Pois bem, então como você pode ver, existem 3 CF... um deste três está sendo transferido para DL.

Bem, no código temos o seguinte, MOV DL,BYTE PTR DS:[ESI+12]. Então se fizermos as contas, o que está sendo transferido é o último CF. O que isto nos diz?

Que nosso serial tem que ter no mínimo 19 caracteres! Viu como tudo vai se encaixando???

Agora sabemos que nosso serial tem que ter a seguinte aparência:

----20-------------.

Legal. Lembra que ele compara com 4?

Então temos o seguinte:

----20------------4.

Legal, vamos lá então!

Continuando, a última checagem é a seguinte:

0041C155   . 8A0E           MOV CL,BYTE PTR DS:[ESI]
0041C157   . 3A4D AF        CMP CL,BYTE PTR SS:[EBP-51]

Ele move nosso primeiro char do serial e compara com algo que está na memória (que no caso é B).

Então se o primeiro char do serial for B, ele continua, senão dá erro!

Pronto, crackeamos um programa comercial no seu último release!!!!!

Agora você é o mestre dos crackers!!!!!

COmo terminou?

User: Rafael

Serial: B---20------------4

Mas e esses -??? Bota qualquer coisa que você quiser pois eles não são checados!

E qual é a 3ª forma para se crackear este programa?

A 3ª forma é você fazer um keygen para ele!

Por exemplo, aqueles números e letras que são checados com nosso serial são contas feitas em cima do User que agente escreve!

Então olhe o programa e veja como ele faz a conta em cima do user e escreva um programa que calcule o serial certo!

Você não ia querer tudo de mão beijada né? Vai estudar rapaz!

Bem, ainda tem outras formas... tipo alterando o número de vezes que você podeusar o programa sem registrar... tipo de 4 vezes para 10000000000.

Enfim, existem possibilidades infinitas para você fazer o que você quiser com o programa!

Conclusão:

Com engenharia reversa você consegue fazer qualquer coisa em qualquer programa... você apenas precisa saber como!

Foi com Engenharia Reversa que HD Moore (se não me engano foi ele...) conseguiu descobrir como era a criptografia dos DVDs. Ele debuggou um player de DVD e voilá.

Possibilidades infinitas. Apenas queira!

Este programa estava com todas as strings expostas, existem programas que nbão são assim, deixam as strings em Unicode (como o Power DVD), existem outros que fazem xor nas strings, existem outros que criptografam o código do executável, outros que usam obfuscação... enfim, existem milhões de programas e milhões de formas de se quebrar ele.

Abraços a todos e até a próxima!

Anonymous

Caraca, ninguém gostou mesmo?

Pelo menos digam o que precisa melhorar... hehe... pq aí melhoro na próxima.

Abraços

Ðark$pawn


Anonymous


Ðark$pawn

Tutos de própria autoria são sempre bem vindos no nosso fórum, ainda mais com esse ótimo nível... Continue conosco Mago__... Seus crackings são ótimos... ;)