静态代码分析-概念:敏感性
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 逆向方法 ( 静态逆向解析 | 函数调用分析 | 动态运行跟踪 | 运行日志分析 | 文件格式解析 | 敏感信息分析 | 网络信息监控 | 环境伪装模拟 )