Oficina
Rebelx crackme três (I-1)
Seg 21 Ago 2006 17:03 |
- Detalhes
- Categoria: Pilotando o rato I-1
- Atualização: Quarta, 15 Abril 2009 12:49
- Autor: vovó Vicki
- Acessos: 18029
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
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.