Tai-e (Chinese: 太阿, pronounced “tai-e”) is an extensible static analysis framework for Java that helps developers and researchers analyze program behavior, identify potential bugs, and build custom analysis techniques. Its design combines ideas from established frameworks such as Soot, WALA, Doop, and SpotBugs with newer approaches developed by the Tai-e team.
Designed for ease of use, performance, and extensibility, Tai-e provides a foundation for experimenting with static analysis and developing new analyses without building an entire framework from scratch. The project is described in its technical research paper.
Tai-e includes a flexible pointer analysis framework for examining object references and relationships within Java programs. Its features include:
The framework provides core analyses and utilities that support more advanced investigations, including:
invokedynamic.These capabilities help researchers inspect program behavior and experiment with different analysis strategies.
Tai-e supports control-flow graph construction and provides a framework for implementing data-flow analyses. Included examples cover common techniques such as live variable analysis and constant propagation. Developers can also implement custom data-flow analyses for specific research or software analysis requirements.
The framework includes a bug detection system inspired by SpotBugs. Existing detectors cover issues such as potential null pointer problems and incorrect implementations of clone(). Its extensible design also allows developers to create custom bug detectors and adapt the framework to their own analysis goals.
Tai-e is developed in Java and supports major desktop operating systems, including Windows, Linux, and macOS. Before building the project from source, make sure Java 17 or a newer version is installed.
The easiest way to obtain a runnable version is to download a packaged JAR file from the official Tai-e GitHub Releases page.
Alternatively, build the latest version from the source repository using Gradle. Clone or download the project, open a terminal in the project directory, and run the following command on systems with a compatible Java installation:
./gradlew fatJar
On Windows, use the Gradle wrapper batch file:
gradlew.bat fatJar
After the build completes successfully, the runnable JAR should be available in the tai-e/build/ directory. The generated JAR includes Tai-e and its required dependencies.
The official Tai-e documentation wiki provides guidance for configuring the framework and developing custom analyses. Useful topics include:
For additional security research resources, explore our guide to digital forensics tools and investigation workflows.
The Tai-e team also provides an educational version of Tai-e featuring eight programming assignments. These exercises guide learners through implementing static analysis techniques and applying them to real Java programs.
The educational version shares a substantial portion of its code with the main framework, making the assignments a practical starting point for understanding Tai-e’s architecture and experimenting with analysis algorithms.
Project repository: Tai-e on GitHub
A data protection platform is a unified system that helps organizations discover, classify, monitor, and…
AI companies operating in or around Switzerland face a compliance challenge that most legal teams…
Two major data privacy laws now govern how organizations handle personal data across Europe; the…
This cheat sheet covers the essential Kali Linux commands every pentester and ethical hacker uses…
When I first started learning malware analysis and reverse engineering, I thought the hardest part…
Both git fetch and git pull talk to a remote repository, but they do very different things to your…