Eu tenho um arquivo binário e devo quebrar sua senha (lição de casa). Também havia uma função fornecida (uma função que faz parte do arquivo binário). Essa função mostrou que a string de entrada foi comparada com o caractere de senha correto por caractere e retornou falso instantaneamente quando um caractere estava errado (isso não é uma maneira segura de fazê-lo, acho que porque está perdendo tempo e temos uma ideia do tamanho correto da senha como exemplo). Mas nosso professor adicionou um temporizador aleatório que retorna o resultado (Correto / Errado) para tornar um pouco mais difícil para nós ...
De qualquer forma, eu já fiz isso com sucesso com engenharia reversa e obtive a senha correta. Agora estou brincando com ele na linha de comando:
/usr/bin/time -v ./program_name enter_password
Com esse comando, recebo muitas informações, como hora do sistema, swaps, tempo de execução. Mas o que é mais interessante para mim é "Opções de contexto voluntárias" porque, quanto mais caracteres corretos da senha eu digito, menos "Opções de contexto voluntárias " Eu recebo!
Quanto mais caracteres errados eu digitar, mais "opções de contexto voluntárias" eu recebo.
Levei quase duas horas para decifrar a senha apenas digitando esse comando, digitando caracteres e observando "Voluntary context switches". Sempre que UM caractere estava correto, o "Voluntary context switches" diminuía um.
Minha pergunta, o que exatamente são "opções de contexto voluntárias" e por que elas me ajudaram a decifrar a senha?