Введение

В статическом анализе программ Soot – это платформа для манипулирования и оптимизации байт-кода, состоящая из промежуточных языков для Java. Она была разработана исследовательской группой Sable в Университете Макгилла. В настоящее время Soot поддерживается группой Secure Software Engineering в Университете Падерборна. Soot предоставляет четыре промежуточных представления для использования через свой API, чтобы другие программы анализа могли получать к ним доступ и строить на их основе:
Baf: представление, близкое к байт-коду. Jimple: упрощенная версия исходного кода Java, в которой максимум три компонента на оператор. Shimple: SSA-вариация Jimple (аналогичная GIMPLE). Grimp: агрегированная версия Jimple, подходящая для декомпиляции и инспекции кода. Текущий релиз программного обеспечения Soot также содержит детальные анализы программ, которые можно использовать «из коробки», такие как контекстно-зависимый, нечувствительный к потоку данных анализ достижимости переменных, анализ графа вызовов и анализ доминирования (отвечающий на вопрос: «должно ли событие a следовать за событием b?»). Также в состав Soot входит декомпилятор под названием dava. Soot – это свободное программное обеспечение, распространяемое под лицензией GNU Lesser General Public License (LGPL). В 2010 году две исследовательские работы о Soot (и) были выбраны в качестве IBM CASCON First Decade High Impact Papers среди 12 других работ из 425 представленных.

Джимпл

Jimple – это промежуточное представление программы на Java, разработанное для упрощения оптимизации по сравнению с Java-байткодом. Оно типизировано, имеет конкретный синтаксис и основано на трехадресном коде. Jimple включает всего 15 различных операций, что упрощает анализ потока управления. В отличие от Java-байткода, который содержит более 200 различных операций, в Jimple локальные и стековые переменные имеют тип, и Jimple по своей природе является типобезопасным. Преобразование в Jimple, или "Jimplifying" (от "упрощения"), представляет собой преобразование байт-кода в трехадресный код. Идея преобразования, впервые исследованная Кларком Вербругге, заключается в том, чтобы связать переменную с каждой позицией в стеке. Таким образом, операции со стеком становятся присваиваниями, использующими стековые переменные.

- Что ?

Теперь Soot заменен фреймворком SootUp, разработанным группой Secure Software Engineering в Университете Падерборна. SootUp – это полная переработка Soot с новой архитектурой, ориентированной больше на статический анализ программ, чем на оптимизацию байт-кода.