Soot 专栏
分析soot的实现原理
raintungli
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Soot 静态分析框架(七)模块分析
Java 9里开始支持模块化,以一个独立的开源项目jigsaw而来, 具体可以参考链接,https://openjdk.java.net/projects/jigsaw/ 同时也可以参考JSR376标准1. module-info 分析在模块化的时候,需要构建module_info.java来声明模块之间的关系,在Module声明里面定义了requires ,exports...原创 2020-01-15 17:29:29 · 2393 阅读 · 0 评论 -
Soot 静态分析框架(六)数据流指向分析
1. 数据流指向分析1.1 指向分析指向分析,给定一个变量的函数,计算其可能的类型,指向信息,指向分析可以帮助其它的分析。1.2 Soot的指向分析框架soot提供了PointsToAnalysis ,PointsToSet接口。任何一个指向的分析都应该实现这两个接口。PointsToAnalysis 方法reachingObjects(Local l),该方法可以返回指向参...原创 2019-10-19 10:00:03 · 3827 阅读 · 0 评论 -
Soot 静态分析框架(五)Annotation 的实现
1. Annotation的实现1.1 Java实现的Annotationjava 的自定义注解实现,通常我们会先自定义一个注解 import java.lang.annotation.ElementType; import java.lang.annotation.*; @Target({ElementType.TYPE,ElementType.FI...原创 2019-10-19 09:06:53 · 1413 阅读 · 0 评论 -
soot 静态分析框架(四)Soot lambda 构建
1. JVM 的 Lambda构建和JVM构建Lambda的方式不同,因为Lambda表达式的类是一个运行的时候动态生成的类,是通过新的JVM的指令集InvokeDynamic来实现,通过调用java/lang/invoke/LambdaMetafactory.metafactory去生成动态的内部Class,在Class里面封装了实现的抽象方法,在抽象方法里实现了对源类的静态方法packag...原创 2019-10-19 08:54:39 · 1275 阅读 · 0 评论 -
Soot 静态分析框架(二)Soot的核心
2. Soot核心BodyBody 是对应的是Java一个函数体,Body是Soot的核心,Graph、Flow的构建都是基于Body进行分析,当然你可以基于不同的IR语言构建不同的Body,soot提供了JimpleBody,ShimpleBody, GrimpBody,当然soot主要是基于Jimple进行分析,在流程中构建的是JimpleBody,其它的Body的构建需要通过开关来控制...原创 2019-09-26 15:18:34 · 3827 阅读 · 3 评论 -
Soot 静态分析框架(三)Soot 过程分析
3.1Soot构建语法树Soot通过objectweb来进行字节码构建成语法树首先scene会去查找一些基础的JVM的类基础的对象Object, Boolean, Void, Integer, Long, Float等 字符串操作:String, StringBuffer的类 Exception, Throwable,以及一些常见的Error类 线程相关的, Thre...原创 2019-09-26 15:30:38 · 8239 阅读 · 0 评论 -
Soot 静态分析框架(一)整体框架
1. Soot 静态分析框架Soot核心对象分别是:Scene、SootClass、SootMethod、SootField、Body。1.1 SceneScene:Scene表示完整的分析环境,可以通过Scene.v()调用设置Options的API,也可以获取一些过程间分析的信息,如call graphs, points-to informati...原创 2019-09-26 15:10:47 · 5337 阅读 · 1 评论
分享