- 一个小哥写的博客,可以作为静态程序分析的入门
- 自动化漏洞挖掘:静态程序分析入门【上】
- 自动化漏洞挖掘:静态程序分析入门【下】
- 2023 SDC 议题回顾 | JDoop:下一代针对Java Web应用的静态分析框架
soot 是 Java 优化框架。它提供了四个用于分析和转换 Java 字节码的中间表示:
- BAF:易于操纵的字节码的简化表示。
- Jimple:一个适合优化的打字3个地址中间表示。
- Shimple:Jimple的SSA变体。
- grimp:jimple的汇总版本,适用于代码和代码检查。
项目地址:https://github.com/soot-oss/soot
- soot知识点整理
- Soot Tutorials
- Soot, a Tool for Analyzing and Transforming Java Bytecode
- A beginner’s guide to static program analysis using Soot
- Soot使用笔记
- Soot使用记录
- Android Taint Flow Analysis for App Sets
- 将 JVM 字节码(和其他输入)转换为中间表示 Jimple
- 提供类层次结构生成
- 使用不同算法/精度生成 CallGraph
- 使用 Heros 支持的 IDE/IFDS 框架进行过程间数据流分析
- 在检索方法主体时应用/启用简单转换(请参阅 BodyInterceptor)
- 提供 Jimple IR 的序列化。
项目地址:https://github.com/soot-oss/SootUp
项目地址:https://github.com/pascal-lab/Tai-e
- Java静态分析框架Tai-e的简单使用
- tai-e教学版实验作业
- 使用太阿(Tai-e)进行静态代码安全分析(spring-boot篇一)
- 使用太阿(Tai-e)进行静态代码安全分析(spring-boot篇二)
- 使用太阿(Tai-e)进行静态代码安全分析(spring-boot篇三)
项目地址:https://bitbucket.org/yanniss/doop/src/master/
TABBY 是一款针对 Java 语言的静态代码分析工具,相关工作已被接收发表在 The 53rd Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN 2023),会议论文录用名单详见DSN2023。 TABBY使用静态分析框架 Soot 作为语义提取工具,将JAR/WAR/CLASS文件转化为代码属性图。 并使用 Neo4j 图数据库来存储生成的代码属性图CPG。
项目地址:https://github.com/wh1t3p1g/tabby
项目地址:https://joern.io/
- 深入浅出Joern(一)Joern与CPG是什么?
- 深入浅出Joern(二)CPG与图数据库
- 深入浅出Joern(三)Joern和Neo4j常用语法大全
- 深入浅出Joern(四)不常用语法大全
- Joern In RealWorld (1) - Acutators + CVE-2022-21724
ByteCodeDL这个名字是从CodeQL演化的,ByteCode对应Code,DL对应QL,是一款声明式静态分析工具,主要是为了弥补CodeQL无法直接分析字节码的遗憾。
本项目主要有两个目的:
- 教学目的,帮助大家入门静态分析,本项目将演示如何通过datalog实现一些静态分析算法,比起命令式静态分析,这种方式要简洁很多,学习了基本原理之后,也可以自己DIY规则。
- 提高挖洞效率,安全研究人员一般拿不到源码,大多数情况只能分析Jar包,然后通过IDEA看反编译之后的代码,效率比较低,希望ByteCodeDL提供的搜索功能、调用图分析功能、污点分析功能,能够提高安全研究人员的挖洞效率。
项目地址:https://github.com/BytecodeDL/ByteCodeDL
支持将java代码转化为AST语法树。
项目地址:https://github.com/javaparser/javaparser
- JavaParser: per generare, modificare e analizzare codice Java JavaParser介绍的PPT,可以做一个入门学习
- JavaParser: Visited 官方出版的文档,可以免费下载
Semgrep 是一个快速、开源的静态代码分析工具,其核心采用 OCaml 语言编写。主要用于在 Commit 和 CI 时查找 Bug 并强制执行代码规范。其中 Semgrep 除了提供 Semgrep CLI 还有 Semgrep CI、Semgrep App 等。但由于 Semgrep App 社区版本有 20 个人数限制,且不支持私有的 Gitlab。故下面的介绍内容全部是基于 Semgrep CLI。