Введение
В статическом анализе программ 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 представленных.
Baf: a near bytecode representation. Jimple: a simplified version of Java source code that has a maximum of three components per statement. Shimple: an SSA variation of Jimple (similar to GIMPLE). Grimp: an aggregated version of Jimple suitable for decompilation and code inspection. The current Soot software release also contains detailed program analyses that can be used out of the box, such as context sensitive flow insensitive points to analysis, call graph analysis and domination analysis (answering the question "must event a follow event b?"). It also has a decompiler called dava. Soot is free software available under the GNU Lesser General Public License (LGPL). In 2010, two research papers on Soot ( and ) were selected as IBM CASCON First Decade High Impact Papers among 12 other papers from the 425 entries.
Джимпл
Jimple – это промежуточное представление программы на Java, разработанное для упрощения оптимизации по сравнению с Java-байткодом. Оно типизировано, имеет конкретный синтаксис и основано на трехадресном коде. Jimple включает всего 15 различных операций, что упрощает анализ потока управления. В отличие от Java-байткода, который содержит более 200 различных операций, в Jimple локальные и стековые переменные имеют тип, и Jimple по своей природе является типобезопасным. Преобразование в Jimple, или "Jimplifying" (от "упрощения"), представляет собой преобразование байт-кода в трехадресный код. Идея преобразования, впервые исследованная Кларком Вербругге, заключается в том, чтобы связать переменную с каждой позицией в стеке. Таким образом, операции со стеком становятся присваиваниями, использующими стековые переменные.
- Что ?
Теперь Soot заменен фреймворком SootUp, разработанным группой Secure Software Engineering в Университете Падерборна. SootUp – это полная переработка Soot с новой архитектурой, ориентированной больше на статический анализ программ, чем на оптимизацию байт-кода.