Desta vez vou diferenciar um pouco o foco do post...esta semana eu estava no laboratório de informatica da faculdade tendo aula de programação (VB) e nas maquinas tem instalado um software chamado "Blok Free 4" este software bloqueia as janelas do tipo "cmd","painel de controle" e etc... ai me deu uma curiosidade (isso que move o mundo...) de burlar a senha do aplicativo em questão....(Gostaria de informar que não utilizei nenhuma maquina de propriedade da faculdade mas sim minha maquina virtual (VirtualBox com windowx XP) em meu notebook ).
OBJETIVO:
Utilizar técnicas de engenharia reversa para localizar e subverter as instruções que verificam a senha de configuração do software "Blok Free 4" para que não seja mais verificado e passe adiante a execução do programa permitindo acesso ao configurador sem necessidade da senha.
RESUMO:
Em dado momento da execução o aplicativo grava o valor da senha correta no registrador EDX e a senha digitada no registrador EAX na sequencia chama uma função que faz a comparação depois um pulo condicional e realizado baseando se na verificação desta função, a ideia é ignorar este pulo condicional para que a execução continue sem verificar a validação da senha digitada.
Vamos lá...
Primeiro Baixei o programa
depois extrai o arquivo .rar
e prossegui com a instalação normalmente
termo de responsabilidade que não fala nada sobre debugar o executável.......
local para a instalação
instalação em progresso normalmente
aviso sobre a senha inicial que é "superb"
mais uma apresentação e avisos e pronto
olha lá o cadiadinho que bonito...vamos tentar sem configurar nada acessar o nosso querido prompt "cmd"
por fim ele bloqueia.
Sempre que tentamos alguma interação com o software nos é apresentada a tela de senha.
digitando a senha tudo funciona corretamente.... até aqui temos o software instalado e funcionando.
Vou descobrir com linguagem utilizada no software com o "RDG Packer Detector"
vamos simular algum erro na autenticação...neste processo obtemos informações sobre dois forms
vou me atentar ao form da senha.. Temos um txtbox dois botões um label com o conteudo "Informe a senha" preciso descobrir o endereço de memoria do evento disparado pelo click do botão "ok" para começar a debuggar no OllyDbg.
Utilizei o programa "E2A - Event to address" para descobrir
Analisando os forms encontrei o fsen:Tfsen onde a caption do lbl1:TLabel é "Informe a senha" comprovando que este é o formulário correto.
Continuando achei o endereço do event click do botão ok (00494728 )
Utilizando o comando ctrl+g vamos ao endereço
Aproveitando para utilizar o "F2" colocando um break point
Manda pau....."F9"
Vamos digitar qualquer senha e ao click no Ok teremos a parada do breakpoint
Agora utilizando o "F8" combinado com "F7" partindo do breakpoint vamos escooooovaaaaarrrrr os bits até chegar no endereço 0049463B onde
a senha correta e carregada para o registrador "EDX="superb"" e a senha digitada esta no registrador "EAX=5444"
A proxima instrução é um call para o endereço 00404EB4 - Onde é feita a comparação e validação da senha digitada e da senha correta
apos o retorno da função é feito um JNZ baseado no retorno (Condicional que define o rumo entre senha correta e senha errada)
Creio que esta condicional é o que procurava, vamos utilizar a tecla "espaço" para modificar a instrução do JNZ no endereço 00494642
Modificação Feita, Substitui a instrução original por "nop"
Vamos continuar a execução com o "F9"
Opa validou a senha errada e nos entregou a tela de configuração....
legal então era a condicional correta, embora eu já tivesse obtido a senha nos passos anteriores, eu gostaria de recompilar o executável modificado desabilitando a verificação de senha possibilitando utiliza-lo em outras maquinas
Para isso vamos fazer um reload no ollydbg e utilizando o endereço obtido anteriormente 00494642 vamos direto ao JNZ para modifica-lo
Depois de modificar
Vamos salvar....Selecionando as alterações clico com direito e seleciono "copy to executable -> selection"
Abri uma nova tela
Na nova tela clico com direito e "save file"
Salvo o novo executavel com o "nome cbfiv_MODIFICADO"
Vou navegar até o diretório
E executo o novo arquivo
Vamos digitar uma senha qualquer tipo "1111" e deu certo abriu o configurador vamos desabilitar o cadiadinho chato
Ok conseguimos vamos acessar o prompt "cmd"
Vamos utilizar o exe modificado para alterar a senha do original para "1234"
E vamos acessar direto pelo icone ao lado do relogio com a nova senha "1234"
Deu certo vou desinstalar o "Blok free 4"
Bom consegui atingir meu objetivo agora vou testar a portabilidade deste executavel modificado em outras maquinas se der certo faço um pro windows 7
Falow até a proxima