首页> 外文期刊>Science of Computer Programming >Recovery of jump table case statements from binary code
【24h】

Recovery of jump table case statements from binary code

机译:从二进制代码恢复跳转表案例语句

获取原文
获取原文并翻译 | 示例

摘要

One of the fundamental problems with the static analysis of binary (executable) code is that of recognizing, in a machine-independent way, the target addresses of n-conditional branches implemented via a jump table. Without these addresses, the decoding of the machine instructions for a given procedure is incomplete, leading to imprecise analysis of the code. In this paper we present a technique for recovering jump tables and their target addresses in a machine and compiler independent way. The technique is based on slicing and copy propagation. The assembly code of a procedure that contains an indexed jump is transformed into a normal form which allows us to determine where the jump table is located and what information it contains (e.g. offsets from the table or absolute addresses). The presented technique has been implemented and tested on SPARC and Pentium code generated by C, C + +, Fortran and Pascal compilers. Our tests show that up to 89/100 more of the code in a text segment can be found by using this technique, when compared against the standard method of decoding. The technique was developed as part of our retargetable binary translation framework UQBT; however, it is also suitable for other binary-manipulation and analysis tools such as binary profilers, instrumentors and decompilers.
机译:静态分析二进制(可执行)代码的基本问题之一是,以机器独立的方式识别通过跳转表实现的n个条件分支的目标地址。没有这些地址,给定过程的机器指令解码将不完整,从而导致代码分析不精确。在本文中,我们提出了一种以机器和编译器无关的方式恢复跳转表及其目标地址的技术。该技术基于切片和复制传播。包含索引跳转的过程的汇编代码将转换为普通形式,这使我们能够确定跳转表的位置以及包含的信息(例如,与表的偏移量或绝对地址)。所提出的技术已经在C,C ++,Fortran和Pascal编译器生成的SPARC和Pentium代码上实现和测试。我们的测试表明,与标准解码方法相比,使用这种技术可以在文本段中找到多达89/100的代码。该技术是我们的可重定位二进制翻译框架UQBT的一部分。但是,它也适用于其他二进制操作和分析工具,例如二进制分析器,检测器和反编译器。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号