Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Tai-e — Простая в изучении/использовании платформа статического анализа для Java и Android | Kitploit
Инструменты/GitHubGitHub/pascal-lab/tai-e
Безопасность AndroidСтатический анализАнализ уязвимостейАнализ КодаОбучение и Образование
GitHubpascal-lab/tai-e

Tai-e

Простая в изучении/использовании платформа статического анализа для Java и Android

Репозиторий
1.8k1981710 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт
<div align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/5723/5e5a1c4adbc35999db283bd6c372430aba581b06159633c846c284a6ef1c91aa.png" height="200">

# Tai-e

[![test](https://github.com/pascal-lab/Tai-e/actions/workflows/test.yml/badge.svg)](https://github.com/pascal-lab/Tai-e/actions/workflows/test.yml)
[![java](https://img.shields.io/badge/Java-17-informational)](https://openjdk.java.net/)
[![maven-central](https://img.shields.io/badge/dynamic/xml.svg?label=maven-central&color=f1834d&query=//metadata/versioning/latest&url=https://repo1.maven.org/maven2/net/pascal-lab/tai-e/maven-metadata.xml)](https://search.maven.org/artifact/net.pascal-lab/tai-e)
[![codecov](https://codecov.io/gh/pascal-lab/Tai-e/branch/master/graph/badge.svg)](https://codecov.io/gh/pascal-lab/Tai-e)
[![DOI](https://img.shields.io/badge/DOI-10.1145/3597926.3598120-blue)](https://doi.org/10.1145/3597926.3598120)
</div>

## ✨Новости

- Релиз v0.5.4:
  - Tai-e поставляется с новым фронтендом, обеспечивающим более быструю и надежную конвертацию Java-программ в IR Tai-e.
  - Анализ Android-приложений поддерживается через плагин на базе PacDroid, интегрированный с анализом указателей.
  - Анализ Spring DI и WEC поддерживается через плагин анализа Spring.
- Наша статья _"Two Approaches to Fast Bytecode Frontend for Static Analysis"_ принята на <ins>OOPSLA'25</ins>. В этой статье представлен новый байткодный фронтенд Tai-e, который значительно быстрее и надежнее существующих фронтендов.
- Наша статья _"Pointer Analysis for Database-Backed Applications"_ принята на <ins>PLDI'25</ins>. В этой статье описан сквозной анализ указателей для Java-приложений, работающих с базами данных, разработанный на основе Tai-e.
- Наша статья _"PacDroid: A Pointer-Analysis-Centric Framework for Security Vulnerabilities in Android Apps"_ принята на <ins>ICSE'25</ins>. Эта работа демонстрирует новые возможности Tai-e в анализе Android, предлагая простой, но эффективный подход к анализу безопасности приложений. Эта работа получила **Best Artifact Award**🏅.
- Наша статья _"Bridge the Islands: Pointer Analysis for Microservice Systems"_ принята на <ins>ISSTA'25</ins>. В этой статье описан первый анализ указателей для Java-микросервисных систем, разработанный на основе Tai-e.
- Наша статья _"Interactive Cross-Language Pointer Analysis for Resolving Native Code in Java Programs"_ принята на <ins>ICSE'25</ins>. Это первый межъязыковой анализ указателей между Java и C. Эта работа получила **Distinguished Paper Award**🏅.
- Наша статья _"Context Sensitivity without Context: A Cut-Shortcut Approach to Fast and Precise Pointer Analysis"_ принята на <ins>PLDI'23</ins>. Это первая опубликованная исследовательская работа, разработанная на основе Tai-e.
- Наша статья _"Tai-e: A Developer-Friendly Static Analysis Framework for Java by Harnessing the Good Designs of Classics"_ принята на <ins>ISSTA'23</ins>. В этой статье описываются проекты основных компонентов Tai-e.

## Содержание

- [Что такое Tai-e?](#what-is-tai-e)
- [Как получить работающий Tai-e?](#how-to-obtain-runnable-tai-e)
- [Как включить Tai-e в свой проект?](#how-to-include-tai-e-in-your-project)
    - [Стабильная версия](#stable-version)
    - [Последняя версия](#latest-version)
- [Документация](#documentation)
    - [Справочная документация](#reference-documentation)
    - [Журнал изменений](#changelog)
- [Задания Tai-e](#tai-e-assignments)

## Что такое Tai-e?

Tai-e (кит.: 太阿; произношение: [ˈtaɪə:]) — это новый фреймворк статического анализа для Java (подробнее см. нашу [статью ISSTA 2023](https://cs.nju.edu.cn/tiantan/papers/issta2023.pdf)), который включает в себя, пожалуй, «лучшие» решения как из предложенных нами новых, так и из классических фреймворков, таких как Soot, WALA, Doop и SpotBugs.
Tai-e прост в изучении, удобен в использовании, эффективен и легко расширяем, что позволяет легко разрабатывать на его основе новые анализы.

В настоящее время Tai-e предоставляет следующие основные компоненты анализа (и другие анализы находятся в разработке):

- Мощный фреймворк анализа указателей
  - Построение графа вызовов «на лету»
  - Различные классические и продвинутые техники абстракции кучи и контекстной чувствительности для анализа указателей
  - Расширяемая система плагинов анализа (позволяет удобно разрабатывать и добавлять новые анализы, взаимодействующие с анализом указателей)
- Настраиваемый анализ безопасности
  - Анализ распространения меток (taint), позволяющий настраивать источники, стоки, переносы меток и санитайзеры
  - Обнаружение различных утечек информации и уязвимостей инъекций
  - Различные компромиссы между точностью и эффективностью (выигрыш от фреймворка анализа указателей)
- Различные фундаментальные/вспомогательные анализы
  - Фундаментальные анализы, например, анализ рефлексии и анализ исключений
  - Анализы современных языковых возможностей, например, анализ лямбда-выражений и ссылок на методы, а также анализ invokedynamic
  - Вспомогательные инструменты, такие как таймер анализа, проверка ограничений (для отладки) и различные дамперы графов
- Фреймворк анализа потоков управления/данных
  - Построение графа потоков управления
  - Классические анализы потоков данных, например, анализ живых переменных, распространение констант
  - Ваши собственные анализы потоков данных
- Система обнаружения ошибок, подобная SpotBugs
  - Детекторы ошибок, например, детектор нулевых указателей, детектор некорректного `clone()`
  - Ваши собственные детекторы ошибок

Tai-e разработан на Java и может работать во всех основных операционных системах, включая Windows, Linux и macOS.

Из уважения к разработчикам, мы просим вас **пожалуйста, [цитируйте](https://github.com/pascal-lab/tai-e/blob/master/CITATION.bib) статью** с ISSTA 2023, описывающую фреймворк Tai-e, в ваших исследовательских работах:

Tian Tan and Yue Li. 2023.
**Tai-e: A Developer-Friendly Static Analysis Framework for Java by Harnessing the Good Designs of Classics.**
In Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA '23), July 17–21, 2023, Seattle, WA, USA ([pdf](https://cs.nju.edu.cn/tiantan/papers/issta2023.pdf), [bibtex](https://github.com/pascal-lab/tai-e/blob/master/CITATION.bib)).

## Как получить работающий Tai-e?

Рекомендуемый способ — загрузить дистрибутивный ZIP-архив из [GitHub Releases](https://github.com/pascal-lab/Tai-e/releases).
ZIP-архив содержит Tai-e, все зависимости времени выполнения, офлайн-документацию и скрипты запуска для Windows, Linux и macOS.

В качестве альтернативы вы можете собрать последнюю версию Tai-e из исходного кода. Это легко сделать с помощью Gradle (убедитесь, что на вашей системе установлена Java 17 или выше):

```bash
./gradlew distZip
```

Дистрибутивный ZIP-архив будет создан в `tai-e/build/distributions/`.
После распаковки запустите Tai-e с помощью скрипта запуска:

```bash
# on Linux/macOS
./tai-e-<version>/bin/tai-e -h
# on Windows
.\tai-e-<version>\bin\tai-e.bat -h
```

Для совместимости со старыми релизами и скриптами Tai-e также предоставляет устаревший all-in-one JAR:

```bash
./gradlew fatJar
java -jar build/tai-e-all-<version>.jar -h
```

## Как включить Tai-e в свой проект?

Tai-e разработан как автономный инструмент, но у вас также есть возможность включить его в свой проект в качестве зависимости.
Он доступен в репозиториях Maven, что позволяет легко интегрировать его в ваши Java-проекты с помощью таких инструментов сборки, как Gradle и Maven.
Мы поддерживаем как стабильные, так и последние версии Tai-e, и ниже приведены соответствующие координаты в формате скриптов Gradle и Maven:

### Стабильная версия

Для Gradle:

```kotlin
dependencies {
    implementation("net.pascal-lab:tai-e:0.5.4")
}
```

Для Maven:

```xml

<dependencies>
    <dependency>
        <groupId>net.pascal-lab</groupId>
        <artifactId>tai-e</artifactId>
        <version>0.5.4</version>
    </dependency>
</dependencies>
```

### Последняя версия

Для Gradle:

```kotlin
repositories {
    mavenCentral()
    maven { url = uri("https://central.sonatype.com/repository/maven-snapshots/") }
}

dependencies {
    implementation("net.pascal-lab:tai-e:0.5.5-SNAPSHOT")
}
```

Для Maven:

```xml
<repositories>
    <repository>
        <id>snapshots</id>
        <name>Sonatype snapshot server</name>
        <url>https://central.sonatype.com/repository/maven-snapshots/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>net.pascal-lab</groupId>
        <artifactId>tai-e</artifactId>
        <version>0.5.5-SNAPSHOT</version>
    </dependency>
</dependencies>
```

Вы можете использовать эти координаты в своих скриптах Gradle или Maven, чтобы включить нужную версию Tai-e в свой проект.

## Документация

### Справочная документация

Мы предоставили подробную информацию о Tai-e в [Справочной документации](https://tai-e.pascal-lab.net/docs/current/reference/en/index.html), которая охватывает различные аспекты, такие как [Настройка в IntelliJ IDEA](https://tai-e.pascal-lab.net/docs/current/reference/en/setup-in-intellij-idea.html), [Параметры командной строки](https://tai-e.pascal-lab.net/docs/current/reference/en/command-line-options.html) и [Разработка нового анализа](https://tai-e.pascal-lab.net/docs/current/reference/en/develop-new-analysis.html).

Обратите внимание, что указанная выше справочная документация относится к *последней версии* Tai-e.
Если вам нужна документация для конкретной стабильной версии, пожалуйста, обратитесь к [Индексу документации](https://tai-e.pascal-lab.net/docs).
Кроме того, документация включена в репозиторий и поддерживается вместе с исходным кодом.
Вы можете получить доступ к справочной документации для конкретной версии Tai-e (в формате AsciiDoc), изучив каталог [docs/en](https://github.com/pascal-lab/tai-e/blob/master/docs/en), начиная с [index.adoc](https://github.com/pascal-lab/tai-e/blob/master/docs/en/index.adoc).
Это позволяет вам получить доступ к документации для конкретной версии Tai-e.

В дополнение к справочной документации, [Javadocs](https://tai-e.pascal-lab.net/docs/current/api/index.html) для Tai-e также доступны как полезный справочный ресурс.

### Журнал изменений

Поскольку мы активно разрабатываем и обновляем Tai-e, мы записываем заметные изменения, особенно новые функции и критические изменения, в [CHANGELOG](https://github.com/pascal-lab/tai-e/blob/master/CHANGELOG.md).
Если вы обнаружите какие-либо проблемы после обновления Tai-e, возможно, вам стоит проверить [CHANGELOG](https://github.com/pascal-lab/tai-e/blob/master/CHANGELOG.md) на предмет полезной информации.

## Задания Tai-e

Кроме того, мы разработали [образовательную версию Tai-e](https://tai-e.pascal-lab.net/en/intro/overview.html), в которой тщательно разработаны восемь заданий по программированию для систематического обучения учащихся реализации различных методов статического анализа для анализа реальных Java-программ.
Образовательная версия использует большую часть кода Tai-e, поэтому выполнение заданий будет хорошим способом познакомиться с Tai-e.
Скачать инструмент