Enunciado
Você sabe como faz um patch?
👉 Clique para baixar o arquivo patch
Objetivo
O objetivo deste desafio era localizar e analisar as funções do arquivo patch para identificar a rotina responsável pela geração da flag.
Solução
Metadados
Verifiquei os metadados do binário em busca de dicas ou incongruências; não encontrei nada relevante.

Strings legíveis
Listei as strings legíveis do arquivo para procurar pistas. Encontrei uma frase e duas palavras que não apontavam diretamente para a flag. A única associação óbvia foi entre “derrota” e a string “Boa sorte da próxima”.
![]()

Verificando as funções do programa
Ao revisar as funções do programa, ficou claro que as palavras encontradas nas strings faziam parte do fluxo do código. Isso sugeriu que as funções derrota() e vitoria() seriam relevantes, provavelmente vitoria() retornaria a flag.
![]()

Executando as funções
Inicialmente tentei executar as funções em modo de debug, mas recebi um erro por falta de permissão. Após ajustar as permissões/ambiente (permitindo o debug/execução), consegui chamar as funções.

![]()
Tive que lidar com o tipo de retorno desconhecido das funções; para contornar isso, tratei o retorno como void temporariamente para forçar a execução. Ao executar:
derrota()imprimiu a mesma frase encontrada nas strings legíveis;vitoria()retornou a flag buscada.

Interpretação / explicação
A função derrota() apenas devolve a string armazenada “crua” no binário, por isso já aparecia listada nas strings legíveis. Já a função vitoria() aparentemente realiza um processo de decodificação sobre um dado previamente armazenado; ao executar essa rotina, a flag é revelada.
