engenharia reversa aplicada

CRACK
THE
BINARY

Aprenda reversing na prática. Binários reais que você vai desmontar, entender e quebrar — sem vídeo, sem teoria vazia, sem enrolação.

40
desafios planejados
8
níveis de dificuldade
0
bullshit
~/cracklab/02-patch-retorno
$ ./challenge
Usuario: hacker
[X] Acesso negado.
$ r2 -A ./challenge
[0x004011b6]> s sym.is_premium_user; pdf
...
4011fe: b8 00 00 00 00 mov $0x0,%eax ← aqui
[0x004011fe]> wx b8 01 00 00 00
$ ./challenge
Usuario: hacker
[OK] Bem-vindo ao conteúdo premium.

Quebre. Entenda.
Faça de novo.

Cada desafio é um binário ELF que você vai desmontar, analisar e patchear. Writeup completo incluído — mas tenta primeiro.

// 01
iniciante
NOP Patch
Dois bytes apagam uma decisão inteira. A primeira coisa que todo reverser aprende.
nop 0x90 jump patch r2
// 02
iniciante
Patch de Retorno
Força uma função a sempre retornar 1 — independente da lógica interna.
mov eax,1 ret registradores
// 03
iniciante
Inverter Jump
A lógica está correta. O portão está virado. Um byte resolve.
je → jne 74 → 75 flags
// 04
iniciante
Patch de Constante
O PIN está gravado no binário. Você pode lê-lo ou reescrevê-lo.
cmp imm32 little-endian objdump
// 05
intermediário
Redirect de Função
call relativo. Você troca o destino calculando o novo offset.
call e8 offset relativo python
// 06
intermediário
Keygen Simples
Entenda o algoritmo de validação. Escreva o gerador de chaves.
reversing algoritmo keygen
// 07
intermediário
Keygen c/ Checksum
O nível sobe. Gere chaves válidas que obedeçam a um checksum CRC-8 interno.
algoritmo checksum python
// 08
intermediário
Serial Fishing
A serial está gravada em texto plano. strings, xxd, grep — você decide.
strings hardcoded
// 09
intermediário
String Patching
O programa sempre imprime "ACESSO NEGADO". Mude o que está escrito no binário.
.rodata patching strings
// 10
intermediário
Licença por Data
Software expirado. Patcheie a data hardcoded ou a verificação com time().
time bypass
// 11 — 40
avançado
Em construção
Anti-debug, XOR, checksums, VM protection e muito mais.
coming soon
// trilha completa — nível 1 10 / 40 desbloqueados
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15

Sem ambiente.
Sem setup.

Você baixa o binário, abre na sua ferramenta favorita e vai. O writeup está lá quando você precisar — não antes.

01
Baixe o binário
ELF 64-bit compilado com gcc. Sem anti-debug artificial. Sem armadilha. O desafio está na lógica.
02
Analise com sua ferramenta
radare2, ghidra, gdb, objdump — o que você preferir. Cada writeup mostra múltiplos caminhos.
03
Leia o writeup
Solução mastigada com endereços reais, cálculo de offsets e variações pra explorar além do óbvio.
radare2
ghidra
gdb + pwndbg
objdump
xxd + dd
python3 / pwntools
binutils

CrackLab nasceu de uma obsessão: aprender reversing quebrando coisas que a gente mesmo faz. Cada desafio aqui foi escrito do zero — sem pegar binário de CTF, sem repackaging de exercício velho.

A ideia é simples: se você criou o binário, você entende cada detalhe que o aprendiz vai encontrar. Isso muda a qualidade do writeup. Muda o que é ensinado. Muda o click que acontece quando funciona.

stack
ELF 64-bit / Linux
gcc -O0 -no-pie
C / C++ / ASM
writeups em Markdown
// comece agora

Primeiro binário.
Primeiro patch.

Clone o repositório e abra o desafio 02.

$ git clone github.com/cracklab/crackmes && cd crackmes/02-patch-retorno
ver todos os desafios