摘要:二进制反汇编是困难的, 但是对于提高二进制软件的安全性至关重要. 造成二进制反汇编比较困难的一大原因是编译器为了提高效率会在二进制代码中引入很多间接跳转表. 为了求解间接跳转表, 主流反汇编工具采用了各种策略. 然而, 这些策略的具体实现以及策略的效果不得而知. 为了帮助研究人员理解反汇编工具的算法实现以及性能, 首先系统总结反汇编工具求解间接跳转表的策略; 然后构建自动化测试间接跳转表框架, 基于该框架, 可以大规模地生成关于间接跳转表的测试集(包含2410455个跳转表); 最后, 在该测试集上, 对反汇编工具求解间接跳转表的性能进行评估, 并人工分析反汇编工具的每个策略引入的错误. 另外, 得益于针对反汇编工具算法实现的系统性总结, 发现6个反汇编工具实现上的bugs.