摘要
反汇编技术是静态分析二进制程序的基础,目前广为采用的反汇编算法是线性扫描和递归行进算法。前者无法正确处理代码段中嵌入数据的情况,后者则必须解决间接跳转目的地址的预测问题。本文介绍了这两种算法的原理,分析了其存在的问题,并利用二进制文件中的重定位信息对它们进行了优化。将优化后的两种方法结合起来,给出了一种新颖的二次反汇编算法,这种算法能够捕获反汇编过程中出错的情况,从而控制错误传播,并使得基于反汇编代码的应用可以针对出错情况进行相应的处理。
Binary disassembly routines form a fundamental component of software systems that statically analyze or modify executable programs. Linear Sweep algorithm and Rrecursive Traversal are two popular methods used by many systems that analyze or modify executable file. The former has the disadvantage that any data that is embedded in the instruction stream is misinterpreted while the latter has difficulty in dealing with indirect jumps. This article examines these two algorithms and illustrates their shortcomings. Relocation Information is used to improve them. A novel revisited method is given by combining the two improved algorithm which can detect situations where the disassembly may be incorrect and limit the extent of such disassembly errors.
出处
《计算机科学》
CSCD
北大核心
2007年第7期284-287,292,共5页
Computer Science