Neste artigo, nas 5 primeiras tarefas, aprenderemos o básico da desmontagem, resolveremos os problemas do nível reverso inicial e também descompilaremos o aplicativo dotNet.
Informações OrganizacionaisEspecialmente para aqueles que desejam aprender algo novo e se desenvolver em qualquer uma das áreas de segurança da informação e da informática, escreverei e falarei sobre as seguintes categorias:
- PWN;
- criptografia (criptografia);
- tecnologias de rede (rede);
- reverso (engenharia reversa);
- esteganografia (estegano);
- pesquisa e exploração de vulnerabilidades na WEB.
Além disso, compartilharei minha experiência em análise forense de computadores, análise de malware e firmware, ataques a redes sem fio e redes locais, realização de protestos e explorações por escrito.
Para que você possa descobrir sobre novos artigos, software e outras informações, criei um
canal no Telegram e um
grupo para discutir quaisquer questões no campo da CID. Além disso, considerarei pessoalmente seus pedidos, perguntas, sugestões e recomendações
pessoais e responderei a todos .
Todas as informações são fornecidas apenas para fins educacionais. O autor deste documento não se responsabiliza por nenhum dano causado a alguém como resultado do uso dos conhecimentos e métodos obtidos como resultado do estudo deste documento.
C, GCC32
Considere o caso mais simples. Esta é a primeira busca reversa.

Em tarefas desse tipo, quando a senha é armazenada como uma sequência, ela pode ser encontrada sem o uso de ferramentas especiais. Vamos executar o programa e ver o que ele exibe.

Ótimo. Temos um convite e uma mensagem sobre a senha errada. Observamos as linhas no arquivo do programa e encontramos entre elas um convite e uma mensagem sobre a senha errada. Deve haver uma senha próxima.

Assim, nas linhas próximas uma da outra, há uma que se parece com uma senha. Vamos tentar.

A tarefa está concluída. Damos a senha, obtemos 5 pontos.

ELFx86, Básico
Somos solicitados a encontrar uma senha.

Carregamos o programa no depurador IDA Pro (uso a versão 7.0) e pressionamos F5 para descompilar o programa.

Assim, o nome digitado é comparado com a cadeia john e a senha com o estripador.

Assim, resolvemos a tarefa corretamente e obtemos nossa senha. Alugamos e ganha mais 5 pontos.

PEx86, proteção 0
Desta vez, recebemos um exe-shnik.

Faça o download no IDA Pro.

O programa não salva as informações de depuração, portanto, não vemos os nomes de funções usuais como main. Vejamos as linhas do programa, para esta imprensa + F12.

Vemos mensagens sobre como inserir as senhas corretas e incorretas. Agora podemos encontrar o bloco com esta linha no código e ver qual condição o precede. Clique duas vezes na linha.

Estamos localizados na seção rdata. Vamos encontrar todos os links no código para este endereço. Para fazer isso, pressione X.

Assim, no código do programa, há apenas uma chamada para a nossa linha. Clicamos duas vezes e vamos para o código.

Estamos no código principal do programa. Estamos descompilando.

Aqui, verifica-se algum número a2 e uma linha a1. Vamos traduzir um numérico para um caractere.

Para fazer isso, pressione R. no número e nosso código mudou.

Agora sabemos a linha, resta descobrir qual é o número a2. Vamos ver todos os links para esta função.

É chamado apenas uma vez.

Como você pode ver, o comprimento da string é passado como o segundo parâmetro. Verifique a senha encontrada.

Nós desistimos e ganhamos 5 pontos.

ELF-C ++, proteção 0
Somos oferecidos para resolver um programa em C ++.

Abrimos no IDA Pro e passamos para o local de uma chamada da mensagem com a senha correta. Vamos colorir de verde.

Vamos diminuir o gráfico.

Então, precisamos passar por duas condições. Vamos analisá-los. Na primeira condição, o número de argumentos é comparado a 1. Ou seja, o programa deve ter mais de um argumento (o primeiro é o nome do programa).

Analisamos a segunda condição.

A string que inserimos é comparada com a string que é passada como parâmetro para a função plouf. Nós descompilamos.

Analise o código. Na verdade a2 - é uma string. Assim, o ciclo corre de i = 0, até o i-ésimo elemento da linha a2 ser 0 (ou seja, até atingir o final da linha).
V3 = a2 [i]
V5 = comprimento (a3)
V6 = a3 [i% v5]
Ou seja, a linha no endereço a1 será igual às duas linhas proxy a2 e a3. Vamos voltar à função principal e encontrar essas linhas.

Então, precisamos definir os parâmetros var_C e var_10. Vamos encontrá-los um pouco mais alto. Essas são as cadeias unk_8048BC4 e unk_8048DCC, respectivamente.

Encontre o valor das strings.

Bem, escreveremos um código para procurá-los.

Nós obtemos a senha.

PE-DotNet, proteção 0
Nesta tarefa, somos oferecidos para reverter o aplicativo .NET.

Você pode determiná-lo usando o utilitário de arquivo.

C # é uma linguagem descompilada, para que possamos obter o projeto original. Isso pode ser
feito usando o
dnSpy .

Vamos abrir o projeto CrackMe e encontrar funções e métodos.

O método Button1_Click verifica a senha com o clique de um botão.

No código fonte, encontramos a senha. Confira.

Nós entregamos.

Por enquanto é tudo. Para continuar ... Você pode se juntar a nós no
Telegram . Lá, você pode propor seus próprios tópicos e votar na escolha de tópicos para os seguintes artigos.