
静态程序分析
文章平均质量分 89
静态程序分析学习笔记和应用场景(Java,iOS和IoT)
消逝者
这个作者很懒,什么都没留下…
展开
-
llvm pass运行实践
文章目录前言一、环境二、编写MyPass并运行二、采用官网的二进制包三、编译安装llvm总结前言 继llvm安装之后,进行自定义pass实现。 需要注意的是,在网上有不少文章以及官方文档,如果读者可以成功实践最好,不然可以参考本文。一、环境 编写pass实践在这里是基于源码编译的方式。相关原创 2022-05-20 19:59:18 · 1583 阅读 · 6 评论 -
llvm安装
文章目录采用官网的二进制包编译安装llvm总结# 前言 整理一下关于llvm的安装步骤。首先保证有一些基本的安装包如 build-essential,所处环境为 Ubuntu 20.04.4 LTS。## 采用包管理器安装 在root模式下执行:apt install llvmapt install clang采用官网的二进制包  原创 2022-05-17 23:52:05 · 10042 阅读 · 4 评论 -
静态程序分析chapter5 - 常量传播分析上(Costant Propagation Analysis)
介绍了常量传播分析(Constant Propagation Analysis)的概念和基本流程,最后采用 Soot 对简单的Java代码进行常量传播分析测试。原创 2021-07-21 16:21:37 · 2004 阅读 · 6 评论 -
静态程序分析chapter4 - 基于格(Lattice)理论的数据流分析
介绍了格理论的相关知识,并通过它来证明了迭代算法的相关特性,并从格的视角总结了 may、must analysis 的差异性。最后提到了优化后的迭代算法 - 工作集算法。原创 2021-07-20 16:37:48 · 2614 阅读 · 2 评论 -
静态程序分析chapter3 - 数据流分析详述(Reaching Definitions、Live Variables、Available Expressions Analysis)
数据流分析的基本流程:首先对问题进行分析,分析之后能够得到 **如何抽象**,**采用前向还是后向**,**采用 may 还是 must** 和**在边界处的初始化值**,然后在确定了采用 may 或 must 之后,就可以得到 **除边界外的初始化语句值** 和 **控制流处理采用 与 or 或**。 三个应用:1,Reaching Definitions Analysis2,Live Variables Analysis3, Available Expressions Analysis原创 2021-07-17 21:26:06 · 3951 阅读 · 8 评论 -
静态程序分析chapter2 - IR(Jimple) 和 CFG
IR(Intermediate Representation)编译器(Compiler)3AC(3-Address Code)Soot和它的IR:JimpleJVM中的方法调用与方法签名简介CFG(Control Flow Graph)的建立原创 2021-07-14 17:21:48 · 3031 阅读 · 2 评论 -
静态程序分析chapter1 - 概述和两个重要步骤
静态程序分析(static program analysis),是一种方法或者技术用来在执行一个程序之前对该程序的行为和某些感兴趣的属性进行分析的手段。关键词:Static Analysis Rice’s Theorem Sound & Complete抽象和过近似(Abstraction + Over-approximate)转换函数(Transfer Functions)控制流合并(Control Flow merging)原创 2021-07-13 18:12:43 · 1787 阅读 · 1 评论