我得到了一个二进制文件,所以我应该破解它的密码(作业)。还提供了一个函数(该函数是二进制文件的一部分)。该函数表明,输入字符串与每个字符都与正确的密码字符进行比较,并且当一个字符错误时会立即返回false(这是不安全的方式,我猜这是因为它浪费了时间,并且我们知道正确的密码长度为例)。但是我们的老师添加了一个随机计时器,该计时器返回结果(正确/错误),这对我们来说有点困难...
无论如何,我已经通过逆向工程成功完成了它,并获得了正确的密码。现在,我在命令行中玩它:
/usr/bin/time -v ./program_name enter_password
使用此命令,我可以获得很多信息,例如系统时间,交换时间,执行时间。。但是对我来说最有趣的是“自愿上下文切换”,因为输入的密码字符越正确,“自愿上下文切换”就越少“我明白了!
输入的错误字符越多,得到的“自愿上下文切换”就越多。
仅通过输入该命令,输入字符并观察“自愿上下文切换”,我花了将近两个小时的时间来破解密码。只要一个字符正确,“自愿上下文切换”就会减少一。
我的问题是,“自愿上下文切换”到底是什么?为什么它们可以帮助我破解密码?