Cracks são modificações dos programas para liberar alguma função. Este tutorial vem para complementar o tutorial postado sobre o OllyDBG.
Para criá-los precisaremos de um bom DEBUGGER(aqui no fórum tem um link para o debugger OllyDBG o tutorial dele).
Para liberar alguma função, ou pular uma verificação precisamos entender um pouco de assembly e seus "saltos condicionais".
A melhor maneira é identificar no programa(através do debugger) onde é feito o teste. Depois de encontrarmos o "onde" precisamos ver o "como".
Vou dar alguns exemplos de "saltos condicionais" assembly:
jmp "jump" esse não é condicional, salta sempre.
JZ "jump if zero" pula se for zero
JNZ "jump if NOT zero" pula se não for zero
je "jump if equal" pula se for igual
jne "jump if NOT equal" pula se não for igual
jb "jump if below" pula se for menor
ja "jump if above" pula se for maior
Estes saltos vão vir depois de um teste entre duas variáveis. Se a condição for verdadeira o programa vai saltar para outra parte do código.
Para criar o crack geralmente modifica-se a condição de teste.
Ex.:
Código:
start:
mov eax, "serial válido"
mov ebx, "serial dado"
cmp eax, ebx
je tudo_ok
...
...
...
...
...
tudo_ok:
...
...
...
Este é um exeplo bem rudimentar. Mas acho que já dá pra dar uma clareada sobre o assunto.
Para burlar o sistema fariamos:
Código:
start:
mov eax, "serial válido"
mov ebx, "serial dado"
cmp eax, ebx
jmp tudo_ok
...
...
...
...
...
tudo_ok:
...
...
...
OBS.: Perceba que mudei o "pule se for igual"(je) para "pule sem testar"(jmp).
Leia o tutorial do OllyDBG aqui no fórum, leia sobre assembly também e você poderá criar seus cracks.
Abraço.
Para criá-los precisaremos de um bom DEBUGGER(aqui no fórum tem um link para o debugger OllyDBG o tutorial dele).
Para liberar alguma função, ou pular uma verificação precisamos entender um pouco de assembly e seus "saltos condicionais".
A melhor maneira é identificar no programa(através do debugger) onde é feito o teste. Depois de encontrarmos o "onde" precisamos ver o "como".
Vou dar alguns exemplos de "saltos condicionais" assembly:
jmp "jump" esse não é condicional, salta sempre.
JZ "jump if zero" pula se for zero
JNZ "jump if NOT zero" pula se não for zero
je "jump if equal" pula se for igual
jne "jump if NOT equal" pula se não for igual
jb "jump if below" pula se for menor
ja "jump if above" pula se for maior
Estes saltos vão vir depois de um teste entre duas variáveis. Se a condição for verdadeira o programa vai saltar para outra parte do código.
Para criar o crack geralmente modifica-se a condição de teste.
Ex.:
Código:
start:
mov eax, "serial válido"
mov ebx, "serial dado"
cmp eax, ebx
je tudo_ok
...
...
...
...
...
tudo_ok:
...
...
...
Este é um exeplo bem rudimentar. Mas acho que já dá pra dar uma clareada sobre o assunto.
Para burlar o sistema fariamos:
Código:
start:
mov eax, "serial válido"
mov ebx, "serial dado"
cmp eax, ebx
jmp tudo_ok
...
...
...
...
...
tudo_ok:
...
...
...
OBS.: Perceba que mudei o "pule se for igual"(je) para "pule sem testar"(jmp).
Leia o tutorial do OllyDBG aqui no fórum, leia sobre assembly também e você poderá criar seus cracks.
Abraço.
Comment