...
首页> 外文期刊>Higher-order and symbolic computation >Context-sensitive analysis without calling-context
【24h】

Context-sensitive analysis without calling-context

机译:没有调用上下文的上下文相关分析

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

获取外文期刊封面封底 >>

       

摘要

Since Sharir and Pnueli, algorithms for context-sensitivity have been defined in terms of 'valid' paths in an interprocedural flow graph. The definition of valid paths requires atomic call and ret statements, and encapsulated procedures. Thus, the resulting algorithms are not directly applicable when behavior similar to call and ret instructions may be realized using non-atomic statements, or when procedures do not have rigid boundaries, such as with programs in low level languages like assembly or RTL. We present a framework for context-sensitive analysis that requires neither atomic call and ret instructions, nor encapsulated procedures. The framework presented decouples the transfer of control semantics and the context manipulation semantics of statements. A new definition of context-sensitivity, called stack contexts, is developed. A stack context, which is defined using trace semantics, is more general than Sharir and Pnueli's interprocedural path based calling-context. An abstract interpretation based framework is developed to reason about stack-contexts and to derive analogues of calling-context based algorithms using stack-context. The framework presented is suitable for deriving algorithms for analyzing binary programs, such as malware, that employ obfuscations with the deliberate intent of defeating automated analysis. The framework is used to create a context-sensitive version of Venable et al.'s algorithm for analyzing x86 binaries without requiring that a binary conforms to a standard compilation model for maintaining procedures, calls, and returns. Experimental results show that a context-sensitive analysis using stack-context performs just as well for programs where the use of Sharir and Pnueli's calling-context produces correct approximations. However, if those programs are transformed to use call obfuscations, a context-sensitive analysis using stack-context still provides the same, correct results and without any additional overhead.
机译:自Sharir和Pnueli以来,针对上下文敏感度的算法已按照过程间流程图中的“有效”路径进行了定义。有效路径的定义需要原子调用和ret语句以及封装过程。因此,当可以使用非原子语句实现类似于调用和退出指令的行为时,或者当过程没有严格的界限时(例如,使用汇编或RTL等低级语言的程序时),所得的算法不能直接应用。我们提供了一个上下文敏感分析的框架,该框架既不需要原子调用和ret指令,也不需要封装过程。提出的框架将控制语义的传递与语句的上下文操作语义分离。开发了上下文敏感度的新定义,称为堆栈上下文。使用跟踪语义定义的堆栈上下文比Sharir和Pnueli的基于过程间路径的调用上下文更为通用。开发了一个基于抽象解释的框架来推理堆栈上下文,并使用堆栈上下文派生基于调用上下文的算法的类似物。提出的框架适用于推导用于分析二进制程序(例如恶意软件)的算法,这些算法采用混淆处理而故意击败自动化分析。该框架用于创建Venable等人的算法的上下文相关版本,以分析x86二进制文件,而无需二进制文件符合用于维护过程,调用和返回的标准编译模型。实验结果表明,对于使用Sharir和Pnueli的调用上下文产生正确的近似值的程序,使用堆栈上下文进行上下文敏感的分析同样有效。但是,如果将这些程序转换为使用调用混淆,则使用堆栈上下文的上下文相关分析仍然可以提供相同,正确的结果,而不会产生任何额外开销。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号