静态代码分析-概念:敏感性

Posted raintungli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态代码分析-概念:敏感性相关的知识,希望对你有一定的参考价值。

1. 流敏感(flow-sensitive)

程序代码执行顺序的分析

代码1:

String a = "test";
a = b;

代码2:

String a = b;
a = "test";

区别:

流不敏感无法识别代码片段a为常量,流敏感能识别到a为常量

常用于:指针别名,指向分析,常量分析

2. 路径敏感(path-sensitive)

依据条件分支语句的不同谓词,计算不同的分析信息

代码:

String name;
int x;
if (x > 0) 
    name = b;
 else 
    name = "test";

路径不敏感:不考虑分支,name 为test∨b

路径敏感:在考虑分支的情况下name为test常量

路径敏感保存分支条件,可对分支进行约束求解,分析分支可达性,常面对的问题:“路径爆炸”(path explosion)或“无穷搜索空间”(infinite search space)

3. 上下文敏感(context-sensitive)

过程间分析( Interprocedural Analysis),考虑函数调用的上下文信息


public static void main(String[] args) 
    String name = test(3); 


private static String test(int x) 
    if (x > 0) 
        return "test1";
     else 
        return "test2";
    

上下文:指在函数调用过程中所包含传递的参数,全局变量等信息

4.    域敏感(field-sensitive)

对对象属性,集合成员等进行分析

class Test 
    private String name;


Map<String, String> maps = new HashMap<String,String>();
maps.put("name","test");

对对象属性name, 以及maps.key:name 进行标记分析

以上是关于静态代码分析-概念:敏感性的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Android 逆向方法 ( 静态逆向解析 | 函数调用分析 | 动态运行跟踪 | 运行日志分析 | 文件格式解析 | 敏感信息分析 | 网络信息监控 | 环境伪装模拟 )

RIPS PHP源码静态分析(转)

在上下文(非)敏感分析中,“上下文”到底是啥意思?

FliterLog代码分析

Calendar类

FilterLog代码分析