我想以某种方式从二进制文件中获取“执行的汇编指令的数量”。 考虑下面的代码段:如何测量执行的汇编程序指令的数量?
if(password[0] == 'p') {
if(password[1] == 'a') {
......
printf("Correct Password\n");
}
}
然后,如果我将开始与例如该程序“ABC”它不会采取第一个分支,因此它会执行更少的指令。如果我放入“pbc”,它会占用第一个分支,因此它会执行更多(大约4-5)的指令。 (这是CTF(Capture The Flag)文件的一些研究)。所以我的想法不是颠倒二进制,试图理解算法,我使用更快的方法计算不同设置的执行汇编指令的数量(如不同的字符或密码长度等),以查看是否可以采用另一个分支使用另一个输入,从而创建更多汇编指令)。我的基本想法是编写一个简单的调试器,在当前指令之后放置一个int3,递增一个计数器,反汇编下一条指令,并在该指令后面放置一个int3(我的想法的简化版本)。
是否有任何程序/库/ ...已经做了那些东西? (因为当程序处理信号时我看到一些问题,...)
(我已经尝试过使用高精度定时器来测量时间,但这是一个完全失败,因为它们之间的区别只是4-5条指令)
显然,这种裂缝都有一个名字,计时攻击http://en.wikipedia.org/wiki/Timing_attack然而,它只有在问题算法快速失败时才有效,或者根据其输入执行不同的时间量来执行,但这并不一定如此。 – Patashu 2013-05-01 03:31:00
基本上你在谈论做指令跟踪。 – 2013-05-01 03:36:27
不,我不想做“定时攻击”我不想用“时间”进行比较,我想用“执行指令的数量”。由于偏见,使用时间是不可能的。我搜索我可以用来做的那些程序 – 2013-05-01 03:48:10