我一直在测试 DynamoRio 和minblox来进行覆盖率分析,我有一个问题,当我在 ping.exe(不传递参数)上多次运行 bbcount 示例时,我得到了不同数量的基本块,我我没有改变任何东西。
bbcoverage/minblox 也会发生同样的情况,我得到不同的跟踪,例如运行 100 次,我只得到 44 条完全相同的跟踪,其他的则完全不同(额外的/丢失的块)。
我也尝试过这个微不足道的程序:
int main(int argc, char* argv[]) {
return 0;
}
bbcount 仍然产生不同的输出,它可能变化较少,但仍然会:
Instrumentation results:
14075 basic block executions
528 basic blocks needed flag saving
1109 basic blocks did not
Instrumentation results:
14075 basic block executions
529 basic blocks needed flag saving
1108 basic blocks did not
Instrumentation results:
14159 basic block executions
529 basic blocks needed flag saving
1108 basic blocks did not
这种行为是预期的吗?我正在禁用 ASLR 的 Windows 上进行测试(使用 EMET)。