我想以某种方式从二进制文件中获取“执行的汇编指令的数量”。考虑以下代码:
if(password[0] == 'p') {
if(password[1] == 'a') {
......
printf("Correct Password\n");
}
}
然后,如果我用例如“abc”启动程序,它不会采用第一个分支,因此它会执行更少的指令。如果我输入“pbc”,它将采用第一个分支,因此它将执行更多(大约 4-5 个)指令。(这是对 CTF(Capture The Flag)文件的一些研究)。所以我的想法不是反转二进制文件并试图理解算法,而是使用更快的方法来计算不同设置(如不同的字符或密码长度等)执行的汇编指令的数量,看看我是否可以采取另一个分支使用另一个输入,从而创建更多的汇编指令)。
我的基本想法是编写一个简单的调试器,只需在当前指令之后放置一个 int3,增加一个计数器,反汇编下一条指令并在该指令之后放置一个 int3(我的想法的强简化版本)。
是否有任何程序/库/...已经完成了这些工作?(因为我在程序处理信号时看到了一些问题,...)
(我已经尝试过使用高精度计时器来测量时间,但那完全失败了,因为差异只有 4-5 条指令)