A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Oficina

Rebelx crackme três (I-1)

Seg

21

Ago

2006


17:03

(31 votos, média 4.77 de 5) 


Calculando o serial

Na listagem do código desassemblado, observe a primeira sequência de instruções que inclui a destacada em vermelho:

00453A81: 33C0                     XOR EAX, EAX
00453A83: A0046C4500               MOV AL, [456C04]
00453A88: 85C0                     TEST EAX, EAX
00453A8A: 7E0C                     JLE 453A98
00453A8C: BA056C4500               MOV EDX, 00456C05
00453A91: 803214                   XOR BYTE PTR [EDX], 14
00453A94: 42                       INC EDX
00453A95: 48                       DEC EAX
00453A96: 75F9                     JNZ 453A91

Em 453A81 o registrador EAX foi zerado com a instrução XOR EAX, EAX e, na instrução seguinte, AL recebe um valor que se encontra num endereço de memória. Ao que tudo indica, este valor é usado como contador porque um pouco mais abaixo EAX é decrementado e, se seu valor não for zero, a execução volta para a linha 453A91. Com toda probabilidade o valor guardado em AL de EAX é o comprimento do nome digitado e cada um dos endereços dos caracteres é colocado no registrador EDX para que possam ser tratados neste loop com um XOR 14. Depois do XOR 14, EDX é incrementado (para apontar para o próximo caracter) e EAX é decrementado para testar se o fim do nome foi alcançado.

O que vem a ser um XOR 14? Digamos que a primeira letra do nome seja A, cujo valor ASCII é 65 decimal ou 41 hexadecimal (pegue a sua calculadora favorita e confira). Bem, o valor binário de 41h é 0100 0001 e o valor binário de 14h é 0001 0100. Numa operação XOR, quando os bits são diferentes o resultado é 1 e, quando os bits são iguais, o resultado é zero. Por exemplo, 1 XOR 1 = 0, 0 XOR 0 = 0 e 1 XOR 0 = 1. Veja a operação com os valores 41h e 14h logo a seguir:

    0100 0001    (41h)
XOR 0001 0100    (14h)
    ---------
    0101 0101    (55h = 85d = caracter U)

Esta operação XOR transformou o caracter A no caracter U. Acontece que o código mostra quatro operações XOR: com 14h, com 19h, com 17h e com 18h. Isto significa que cada caracter do nome será trocado por quatro caracteres. O primeiro já foi calculado e resultou em U. Os outros três são:

    0100 0001    (41h)
XOR 0001 1001    (19h)
    ---------
    0101 1000    (58h = 88d = caracter X)

    0100 0001    (41h)
XOR 0001 0111    (17h)
    ---------
    0101 0110    (56h = 86d = caracter V)

    0100 0001    (41h)
XOR 0001 1000    (18h)
    ---------
    0101 1001    (59h = 89d = caracter Y)

Ou seja, se o raciocínio estiver certo, o serial do nome A deve ser UXVY. Confira para ver se você recebe a mensagem de congratulação smile

Obs: caso você não saiba quais são os caracteres que correspondem aos valores calculados, procure a Tabela ASCII na seção informática > oficina > referências.

Agora deixe a preguiça de lado. Pegue lápis, papel e uma calculadora (a do Windows em modo científico quebra uma galho) e determine na raça o serial para o nome ALDEIA.

Mais algumas dicas

No começo do texto eu falei sobre duas ferramentas que nos ajudariam a quebrar este crackme: o GUiPeX e o OllyDbg. Se você baixou estes programas e já os instalou, siga com a leitura.

Informações adicionais