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

KeygenMe #1 (I-2)

Dom

27

Ago

2006


17:46

(16 votos, média 4.81 de 5) 


Este keygen-me é um bom desafio que exige algum conhecimento da linguagem Assembly e das funções da API do Windows.

O programa

O programa foi escrito por Boonz em Assembly para a plataforma Windows e não foi compactado. Publicado em 26 de Julho de 2006 pode ser encontrado no site crackmes.de. Você pode baixá-lo em downloads > informática > crackme > iniciantes, mas, antes de fazê-lo, saiba que o programa NÃO roda em versões anteriores ao Windows XP.

Objetivo do desafio

O objetivo é encontrar a forma como é obtido o serial e escrever um programa keygen que gere seriais corretos para qualquer nome.

Analisando o programa

O programa possui duas caixas de texto, uma para o nome e a outra para o serial. Deixando ambas vazias e clicando em [Check], recebemos o recado de que o nome precisa ter de 4 a 50 caracteres. Colocando qualquer coisa no nome e no serial, recebemos a mensagem Hello, Mr. Bad boy! - a não ser que, por inspiração divina, você consiga acertar na primeira smile

Planejando o ataque

Bem, se existe uma mensagem dizendo Hello, Mr. Bad boy! é provável que exista uma dizendo algo como Hello, Mr. Goodboy ou Congratulations!. É apenas um palpite, mas, quando não se tem nada, os palpites são a única coisa que nos resta.

Como o programa foi escrito em Assembly (basta conferir com o PEiD), o código costuma ser bem "limpinho". É de se esperar que exista uma rotina que calcule o serial de acordo com o nome fornecido... e é isto que vamos procurar.

As ferramentas

  • Como sempre, o PEid vai ser usado para conferir a linguagem usada, as seções do executável e dar uma primeira sapeada no código. Você pode baixá-lo em downloads > informatica > utilitários.
  • OllyDbg para rastrear a rotina que calcula o serial. Está à disposição em downloads > informática > debuggers.
  • Qualquer linguagem de programação para criar o keygen - fica a seu critério. Dá até para usar a velha e boa JavaScript, com a qual apresentarei o keygen no final deste artigo.

PILOTANDO O MOUSE

Execute o PEid e carregue o executável: vem a confirmação, foi escrito em MASM32 / TASM32. Clique no botão [>] à direita de EP Section só para garantir que as seções são as usuais - .text, .rdata, .data e .rsrc. Agora, clique no botão [>] à direita de First Bytes para chamar o desassemblador. Role o texto um pouco para cima que logo você vai encontrar

00401323: 6817DC4000               PUSH 0040DC17 -> Hello, Mr. Bad boy!
00401328: 68F8DF4000               PUSH 0040DFF8
0040132D: E866000000               CALL 00401398
00401332: 83C408                   ADD ESP, 00000008
00401335: 33C0                     XOR EAX, EAX
00401337: C3                       RET 
00401338: 6803DC4000               PUSH 0040DC03 -> Hello, Mr. Goodboy!
0040133D: 68F8DF4000               PUSH 0040DFF8
00401342: E851000000               CALL 00401398
00401347: 83C408                   ADD ESP, 00000008
0040134A: 33C0                     XOR EAX, EAX
0040134C: C3                       RET 
0040134D: 6A28                     PUSH 00000028
0040134F: 68F8DD4000               PUSH 0040DDF8
00401354: E821000000               CALL 0040137A
00401359: 6865DC4000               PUSH 0040DC65 -> Name must be 4 - 50 chars long!
0040135E: 68F8DF4000               PUSH 0040DFF8
00401363: E830000000               CALL 00401398
00401368: 83C408                   ADD ESP, 00000008
0040136B: 33C0                     XOR EAX, EAX
0040136D: C3                       RET

Parece que está fácil. Vamos marcar o endereço 00401323 e apelar para o OllyDbg.

Informações adicionais