Fala galera, voltei 😀 Sem piedade, como sempre.
Para quem já conseguiu matar o desafio 6… vamos para o 7:
Tentar o Desafio 7
Então.. vamos continuar a batalha com o desafio 6?
[[ Descobrindo o problema ]]
Pulamos aquele jump enjoado sobre o qual eu falei, mas o programa não mostrou o nosso artigo: porque? De volta ao debugging, seu preguiçoso! Pra isso, faça tudo o que você fez antes… PORÉM!!! No último passo, onde você pressiona F9 pro programa te entregar o artigo de mão beijada, você vai continuar debugando passo a passo pra ver o que acontece.
Logo abaixo, você vê o seguinte trecho de código:
00401197 |> 6A 0A PUSH 0A 00401199 |. 52 PUSH EDX 0040119A |. 8D4424 0C LEA EAX,DWORD PTR SS:[ESP+C] 0040119E |. 6A 0B PUSH 0B 004011A0 |. 50 PUSH EAX 004011A1 |. FF15 98204000 CALL DWORD PTR DS:[] ; MSVCR80.strncpy_s
O valor de EDX, quando você olha nos registradores, é um endereço que aponta para a senha que você digitou… hummm… Você percebe que ele está passado parâmetros para a função strncpy_s do VC++, que copia uma string para dentro da outra, considerando o tamanho. EAX recebe o endereço do buffer que irá receber a cópia da string, o qual está dentro da pilha.. muito bem.
Após isso, o seguinte trecho de código:
004011A7 |. 83C4 10 ADD ESP,10 004011AA |. 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4] 004011AE |. E8 4DFFFFFF CALL Esconded.00401100