符号执行法提取Android原生代码控制流图

1 下载量 51 浏览量 更新于2024-08-28 收藏 618KB PDF 举报
“基于符号执行的Android原生代码控制流图提取方法是一种新的技术,旨在从Android应用软件的原生代码中生成控制流图。这种方法利用符号执行来模拟JNI函数调用,并通过约束求解器解析符号,从而实现对原生库中函数的控制流图提取。开发的原型系统CFGNative能够准确识别样本中的所有JNI函数和原生方法,并能在合理的时间内达到高代码覆盖率。” 在计算机科学领域,控制流图(Control Flow Graph, CFG)是一种重要的程序分析工具,它表示了程序中各个指令的控制流程。在Android应用中,原生代码(Native Code)通常指的是用C/C++编写的部分,这些代码可以通过Java Native Interface (JNI)与Java代码交互。由于原生代码的复杂性和动态性,传统的静态分析方法往往难以完全理解和提取其控制流图。 符号执行是一种程序分析技术,它将程序的输入视为符号变量而不是具体的值,并跟踪程序执行路径上的所有可能状态。在Android原生代码控制流图提取中,符号执行被用来创建一个虚拟的执行环境,模拟JNI函数调用的过程。JNI是Java平台的一部分,允许Java代码调用本地(非Java)代码,通常是为了提升性能或利用特定硬件功能。 在这个研究中,研究人员提出了一个名为CFGNative的原型系统,该系统利用符号执行来处理原生库中的函数。当遇到JNI函数调用时,系统会对其进行模拟,这涉及到生成对应的约束,并使用约束求解器来解决这些符号表达式,以确定可能的执行路径。这种技术的优势在于可以覆盖到多种可能的执行情况,从而生成更完整的控制流图。 实验结果证明了CFGNative的有效性,它能够准确地识别并处理样例中的所有JNI函数调用和原生方法。此外,系统在可接受的时间内达到了较高的代码覆盖率,这意味着它能够分析大量的代码路径,这对于理解和调试复杂的Android应用原生代码非常有价值。 这项工作为Android应用的安全分析和逆向工程提供了新的工具和技术,有助于提高对原生代码的理解和漏洞检测的效率。通过符号执行和控制流图提取,开发者和安全专家可以更好地理解应用程序的行为,发现潜在的安全问题,以及优化代码性能。