Crackme160 - # 1 burn.exe Ácido

fofoca

janelas de aprendizagem recentemente começou a reverter, a escola ainda é superficial, de modo a Crackme160 prática de alvo, ao mesmo tempo, urge a sua aprendizagem pode agradar a si mesmos, o aprendizado é interminável, esperança de que eles não podem esquecer o coração cedo.

 

texto

previsão

O objetivo deste exercício é o primeiro de ácido burn.exe crackme. Primeiro, abra o programa diretamente, e ver quais são as metas atuais.

Primeiro executar os popups do programa, dar algumas informações informações de boas-vindas e autor, interface principal do programa aparecerá após clicar OK

Clique em ambos os lados do respectivo botão, o programa tem duas partes pode ser visto:

A primeira parte da série / Nome para digitar o Nome e Serial respectivamente, presumivelmente por criptografar o programa irá gerar em si Serial pela entrada Nome e, em seguida, entramos as cordas comparando série, a primeira tentativa de introduzir um valor aleatório alguns aqui, e clique checkit , obter um erro como segue:

Serial segunda porção necessidade de entrar em série, ou App estimativa gera uma série de cadeias de entrada comparação em série. Ainda tentar inserir um valor aqui, você recebe a seguinte mensagem de erro:

 

 

fenda

Previsão pode ser obtido pela presente momento os seguintes objectivos:

  • 1. Ignorar pop neg no início do programa (e tão bem, este não é o objetivo principal)

  • seção 2.serial, clique no botão exibido corretamente verifique ele solicita.

  • 3.serial / mostrar o botão correto quando clica solicitado verificá-lo parte do nome.

1. Ignorar pop neg

    cadeia de procura (1) Método

Porque o programa não codificação de string, então você pode por certo - encontrar a corda correspondente> procurar for-> maneira toda referência cordas

conteúdo corda quando o programa começa, a exibição da pesquisa de cadeia pop pode ser visto como

Double-selecionar ou inserir para entrar no ponto da chamada, como mostrado abaixo, o endereço de memória da seqüência passada como um parâmetro

Na verdade, na chamada após entrar no pull down chamada MessageBoxA pode ver na figura, esta é a segunda forma de crack indo para ele.

Acima do solo, em um ponto de interrupção no F2 Chamada, F9 para executar lá, da área de pilha pode ser visto que o valor de retorno da chamada de função, a chamada pode alcançar o mesmo entrar.

Se você precisar pular pop, na chamada diretamente para matar, mas o equilíbrio pilha de notas e valores de retorno, existe um valor de retorno deve EAX, podemos substituir a chamada para MessageBox mov eax depois pressione OK, 1 , o espaço remanescente pode ser preenchido com um NOP.

(2) Pesquisa chamada de método interno

janelas geralmente são pop a chamada MessageBox janelas API, para que a chamada pode ser pesquisado, a fim de encontrar o ponto de popups de chamadas.

Direito à opção de desenho MessageBox selecionado, ou seja, um ponto de ruptura em todos os locais de atendimento. F9 e, em seguida, continuar a executar sobre os próximos passos e métodos (1) a mesma.

Método de pilha de controlo (3) Pausa

Sob nenhuma circunstância pontos de interrupção, executar o programa directamente OllyDbg, suspensão F11 do programa após a pop pop-, como mostrado abaixo

Neste momento, o programa principal é executado em loop de janelas, as esperas de loop para uma mensagem. Necessidade de desligar a área de pilha, porque messagebox para bloquear o programa e digite a mensagem sem suspendeu a pilha de chamadas função deve ser salvo, então virar para baixo a pilha de chamadas pode encontrar informações messagebox, como mostrado abaixo:

Após o passo do método e também consistente com (1).

 

parte 2.serial

Use qualquer um dos métodos acima para localizar o botão de posição checkit enter qualquer chamada corda messagebox como

Esta posição pode ser visto ao mesmo tempo, há um mal sucedida e rápida, virado para cima, atingido o ponto de ruptura na posição inicial quadro de pilha

push    ebp
mov     ebp, esp

operação de um único passo F8, enquanto se observa a informação de área de pilha pode ser analisado como se segue para Chinês comenta FIG. A partir desta análise a corda meta do programa Olá Cara!.

input programa a corda, para obter a correta sugerido como segue:

parte 3.serial / nome

O mesmo método para encontrar a chamada localização messagebox.

Da mesma forma se olhou para cima para encontrar a posição da comparação salto seqüência de código, como segue:

Aqui você pode ver o resultado alvo foi gerado e, portanto, precisa olhar para cima a gerar seqüência de código. região de interesse progressiva e funcionando e pilha de despejo pode ser analisada como região anotação conteúdo anotação chinês, ou seja, o programa irá ler o primeiro caractere da seqüência de entrada, em seguida, multiplicando a segunda entrada 29 é multiplicado como um parâmetro para uma função para gerar intermediário série segmento, e depois fazer a luta string. Uma análise mais aprofundada preciso entender que depois de introduzir a função de geração de uma série intermediário.

Na FIG chamada gerado no meio da série, encontrado próxima chamada nível, os parâmetros passados ​​para a vista, encontrar o primeiro caracter do valor de entrada 0x29 * 2 * e "% d", o formato printf ligação da entrada, adivinhar entrada aqui feita a partir de cadeia hexadecimal da casa decimal e de saída, em seguida, de modo que o resultado seguinte conjectura experimental indica adivinhar correctamente

Aqui para fingir não saber a intenção de continuar a descer esta chamada nível de encontrar. Após um período de operação do carácter de processamento d% (% preâmbulo inclui leitura, processamento de ramos em um formato diferente para a entrada d ou similares de acordo com a x%), o segmento de código cálculo para o núcleo:

O segmento que é escrito em linguagem C como segue:

#include <cstdio>
#include <cstdint>

int main()
{
	const uint8_t kEcx = 0xA;
	char input_char = 0;
	input_char = getchar();

	uint32_t source;
	source = input_char * 0x29 * 2;
	
	uint32_t mod;

	char result[16] = { 0 };
	uint32_t i = sizeof(result) - 2;//留一个\0
	do{
		mod = source % kEcx;
		source /= kEcx;

		mod += '0'; //add dl,30
		if (mod >= ':')  //cmp dl,3A
		{
			mod += 7;
		}
		result[i--] = mod;
		//putchar(mod);
	} while (source);

	i = 0;
	while (result[i] == 0) ++i;
	printf("%s\n", &result[i]);

	return 0;
}

No procedimento acima descrito com base no aumento "CW" "-CRACKED" concatenação programa, RI para concluir o procedimento. A seguir, qualquer entrada, RI obtidos utilizando os resultados, como mostrado abaixo:

Neste ponto, toda a extremidade crackme.

palavras finais

Crackme para baixo toda a sensação ainda precisa de mais prática, necessidade de aprender muito, a esperança de ser capaz de ficar com ela depois, vai estabelecer uma base sólida de conhecimento e habilidade para dominar e, assim, aumentar a consciência dos outros aspectos do conhecimento, em suma, não se esqueça do coração cedo.

Publicado 19 artigos originais · ganhou elogios 7 · vista 6933

Acho que você gosta

Origin blog.csdn.net/G_METHOD/article/details/104136453
Recomendado
Clasificación