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

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

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.8k19834 дней назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Сайт

Tai-e

test java maven-central codecov DOI

✨Новости

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

Содержание

  • Что такое Tai-e?
  • Как получить работающий Tai-e?
  • Как включить Tai-e в свой проект?
    • Стабильная версия
    • Последняя версия
  • Документация
    • Справочная документация
    • Журнал изменений
  • Задания Tai-e

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

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

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

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

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

Из уважения к разработчикам, мы просим вас пожалуйста, цитируйте статью с 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, bibtex).

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

Рекомендуемый способ — загрузить дистрибутивный ZIP-архив из GitHub Releases. ZIP-архив содержит Tai-e, все зависимости времени выполнения, офлайн-документацию и скрипты запуска для Windows, Linux и macOS.

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

root@kitploit:~
./gradlew distZip

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

root@kitploit:~
# 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:

root@kitploit:~
./gradlew fatJar
java -jar build/tai-e-all-<version>.jar -h

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

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

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

Для Gradle:

root@kitploit:~
dependencies {
    implementation("net.pascal-lab:tai-e:0.5.4")
}

Для Maven:

root@kitploit:~

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

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

Для Gradle:

root@kitploit:~
repositories {
    mavenCentral()
    maven { url = uri("https://central.sonatype.com/repository/maven-snapshots/") }
}

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

Для Maven:

root@kitploit:~
<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 в Справочной документации, которая охватывает различные аспекты, такие как Настройка в IntelliJ IDEA, Параметры командной строки и Разработка нового анализа.

Обратите внимание, что указанная выше справочная документация относится к последней версии Tai-e. Если вам нужна документация для конкретной стабильной версии, пожалуйста, обратитесь к Индексу документации. Кроме того, документация включена в репозиторий и поддерживается вместе с исходным кодом. Вы можете получить доступ к справочной документации для конкретной версии Tai-e (в формате AsciiDoc), изучив каталог docs/en, начиная с index.adoc. Это позволяет вам получить доступ к документации для конкретной версии Tai-e.

В дополнение к справочной документации, Javadocs для Tai-e также доступны как полезный справочный ресурс.

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

Поскольку мы активно разрабатываем и обновляем Tai-e, мы записываем заметные изменения, особенно новые функции и критические изменения, в CHANGELOG. Если вы обнаружите какие-либо проблемы после обновления Tai-e, возможно, вам стоит проверить CHANGELOG на предмет полезной информации.

Задания Tai-e

Кроме того, мы разработали образовательную версию Tai-e, в которой тщательно разработаны восемь заданий по программированию для систематического обучения учащихся реализации различных методов статического анализа для анализа реальных Java-программ. Образовательная версия использует большую часть кода Tai-e, поэтому выполнение заданий будет хорошим способом познакомиться с Tai-e.

Скачать инструмент