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

Ser-Me do megadoctor (I-1)

Qua

23

Ago

2006


11:24

(11 votos, média 4.55 de 5) 


O OllyDbg entra em ação

O DeDe nos indicou o endereço inicial da subrotina chamada quando clicamos o botão [Registrar], ou seja, 004596DC. Abra o Ser-Me.exe no OllyDbg, coloque uma parada (breakpoint) no endereço citado com F2 e rode o programa com F9. Quando a janela do Ser-Me for apresentada, clique no botão [Registrar]. BINGO! A execução é interrompida exatamente onde queremos:

004596DC   . 53             PUSH EBX
004596DD   . 8BD8           MOV EBX,EAX
004596DF   . B8 58CC4500    MOV EAX,Ser-MeCe.0045CC58
004596E4   . BA 58974500    MOV EDX,Ser-MeCe.00459758                ;  ASCII "Error"
004596E9   . E8 EAABFAFF    CALL Ser-MeCe.004042D8
004596EE   . B8 54CC4500    MOV EAX,Ser-MeCe.0045CC54
004596F3   . BA 68974500    MOV EDX,Ser-MeCe.00459768                ;  ASCII "Wrong Serial !"
004596F8   . E8 DBABFAFF    CALL Ser-MeCe.004042D8
004596FD   . C705 5CCC4500 >MOV DWORD PTR DS:[45CC5C],1010
00459707   . A1 5CCC4500    MOV EAX,DWORD PTR DS:[45CC5C]
0045970C   . 50             PUSH EAX
0045970D   . A1 58CC4500    MOV EAX,DWORD PTR DS:[45CC58]
00459712   . E8 1DB0FAFF    CALL Ser-MeCe.00404734
00459717   . 50             PUSH EAX
00459718   . A1 54CC4500    MOV EAX,DWORD PTR DS:[45CC54]
0045971D   . E8 12B0FAFF    CALL Ser-MeCe.00404734
00459722   . 50             PUSH EAX
00459723   . 8BC3           MOV EAX,EBX
00459725   . E8 4624FEFF    CALL Ser-MeCe.0043BB70
0045972A   . 50             PUSH EAX                                 ; |hOwner
0045972B   . E8 98D7FAFF    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
00459730   . A3 60CC4500    MOV DWORD PTR DS:[45CC60],EAX
00459735   . 8B83 04030000  MOV EAX,DWORD PTR DS:[EBX+304]
0045973B   . 8B10           MOV EDX,DWORD PTR DS:[EAX]
0045973D   . FF52 50        CALL DWORD PTR DS:[EDX+50]
00459740   . 84C0           TEST AL,AL
00459742   . 74 0A          JE SHORT Ser-MeCe.0045974E
00459744   . B8 80974500    MOV EAX,Ser-MeCe.00459780                ;  ASCII "Get Rid of
                                                                        This little fucker :P"
00459749   . E8 BA55FDFF    CALL Ser-MeCe.0042ED08
0045974E   > 5B             POP EBX
0045974F   . C3             RETN

Vá pilotando a execução passo a passo com F7. Ao executar a instrução do endereço 004596E4 observe que a string "Error" foi copiada do endereço 00459758 e colocada no registrador EDX. Anote este endereço! Logo em seguida é feita uma chamada para uma subrotina que, no momento, não nos interessa. Faça um step-over com F8 nesta chamada.

Mais dois F7 e agora o registrador EDX recebe a string "Wrong Serial !" que está no endereço 00459768 (anote este endereço também). A seguir, a mesma subrotina citada acima é chamada - use F8 para executá-la e retornar imediatamente para uma instrução abaixo dela (isto é para não se perder smile ).

Continue com F8 para as chamadas e com F7 para as outras instruções. Observe que as strings são passadas para o registrador EAX e depois colocadas na pilha (você pode observar a pilha no painel inferior direito do OllyDbg). Isto nada mais é do que a preparação para uma chamada à função MessageBoxA da API do Windows que nos apresentará uma caixa de mensagem com o título "Error" e com o texto "Wrong Serial !".

Bem, se uma das tarefas é fazer com que o Ser-Me aceite QUALQUER serial e dê a mensagem "Serial Certo !", então a solução é mais do que simples. Basta localizar as duas strings nos endereços anotados e alterá-las. Para isto, procure e selecione o endereço 00459758. Depois, clique com o botão direito do mouse sobre ele, escolha Binary e depois Edit (Ctrl-E faz o mesmo). Na janela de edição, na área de texto identificada por ASCII, substitua Error por Legal ou outro título qualquer de, no máximo, 5 caracteres. NÃO mexa no sexto caracter da string (que corresponde ao valor hexadecimal 00), porque este é um terminador de strings que não pode faltar. Terminada a alteração, clique no botão [OK] e observe a alteração ocorrida no painel das instruções - não aparece nada dizendo que se trata de uma string de caracteres ASCII, mas sim uma porção de instruções complicadas destacadas em vermelho. Xiiiii sad será que deu pau? Não se preocupe, é apenas o OllyDbg achando que introduzimos código executável. Tudo isto se ajeita depois que salvarmos o programa com as alterações.

Agora que você sabe como fazer alterações, troque a string "Wrong Serial !" por "Serial Certo !" no endereço 00459768. Recomece a execução com F9, clique no botão [Registrar] e observe as mudanças na caixa de mensagem. tá tudo em riba? Então chegou a hora de salvar as mudanças introduzidas. Clique com o botão direito do mouse em qualquer lugar do painel de instruções, escolha Copy to executable e <All modifications. Na nova caixa de mensagem (Copy selection to executable file?) clique no botão [Copy all]. O OllyDbg abre uma nova janela que mostra a cópia do arquivo. Clique nesta nova janela com o botão direito do mouse, escolha Save file e salve com um nome da sua escolha (eu usei Ser-MeStrings.exe).

Execute o "novo" Ser-MeStrings.exe. Agora o bacaninha mostra a mensagem de Serial Certo mas, logo em seguida, ainda joga a mensagem "Get Rid of This little fucker :P" na tela. Tirar este negócio é a nossa última tarefa. Para isto, observe o endereço 00459742, um pouco antes da string:

00459742   . 74 0A          JE SHORT Ser-MeCe.0045974E

O endereço apontado pelo salto corresponde à preparação do encerramento desta subrotina, ou seja, o alinhamento da pilha com POP EBX, e depois pede para retornar ao ponto de chamada com RETN. Bem, que tal simplesmente forçar este salto?

Selecione o endereço 00459742, clique sobre ele com o botão direito do mouse e escolha Assemble (ou simplesmente aperte a tecla de espaço). Na janela de edição troque JE SHORT 0045974E por JMP SHORT 0045974E e clique no botão [Assemble]. No painel de instruções 74 0A é mudado para EB 0A e aparece destacado em vermelho (já sabemos, é porque foi alterado). Rode o programa com F9 e confirme que o "little fucker" deixou de atazanar.

Finalmentes

Da minha parte, por ora é só. Para você que está lendo este tutorial, ainda falta salvar o arquivo com a última alteração feita. No jargão da ER estas alterações feitas na marra são chamadas de patch, ou seja, remendos. Usei este crackme meio sem graça como exemplo apenas para mostrar como é fácil fazer remendos... contanto que se saiba como e onde.

Abraços a todos

vovo

mfx brokerсковороды чугунные купить в москвелобановский александр досьеноутбук планшетпродвижение сайтов это2dayалександр лобановский

Informações adicionais