2. 《jogo》
Primeiro abra-o para ver como ele se parece e, em seguida, use a ferramenta para obter 32 bits; abaixo, usamos ida e od para resolver o problema.
1.IDA
Considerando que o código antes de 28 linhas não é importante, ele não será colocado aqui para ocupar espaço.Ao mesmo tempo, se o IDA não puder obter corretamente o nome da função personalizada, o IDA usará sub__ mais o endereço inicial da função personalizada para definir a função Primeiro nome
A v2 na linha 35 é atribuída ao valor de entrada e, em seguida, se faz a v2 pertencer a [0,8]
Aqui podemos concluir que cada bit de byte_532E28 é 1 e ele entrará em sub_457AB4 (), achamos que esse pode ser o local em que a bandeira está apagada.
Continue a seguir sub_457AB4 ()
Peça omitida aqui ...
Basicamente, pode-se inferir que a última é a função de impressão; então, podemos obter a flag desde que calculemos o loop for e o script
a = [123,32,......,126,0]
b = [18,64,......,16,0]
c = 0
flag = ''
while (c<56):
a[c] ^= b[c]
a[c] ^= 0x13
flag = flag + chr(a[c])
c = c + 1
print(flag)
2. A partir
Primeiro encontre o endereço que pode ser o último sinalizador, faça o acompanhamento
Aquele com o ícone 1 é o endereço do acompanhamento. O local em que olhamos para a marca 2 é o endereço da função que nos iniciou. Siga a seta vermelha e procure por todo o caminho para encontrar o endereço do salto.
Lembre-se deste endereço: E37AB4, procuraremos novamente o local da falha
Continue acompanhando
Nesse ponto, precisamos sobrescrever apenas a função que pode alcançar diretamente o sinalizador, digite jmp 0xE37AB4
Depois de salvar o arquivo, digite qualquer valor,