Jump to content

Сажа (программное обеспечение)

В статическом анализе программ Soot представляет собой среду обработки и оптимизации байт-кода, состоящую из промежуточных языков для Java . Он был разработан исследовательской группой Sable в Университете Макгилла . В настоящее время Soot поддерживается группой Secure Software Engineering Group в Падерборнском университете . [1] Soot предоставляет четыре промежуточных представления для использования через свой API , чтобы другие программы анализа могли получить доступ и использовать их: [2]

Текущая версия программного обеспечения Soot также содержит подробный программный анализ , который можно использовать «из коробки», например, контекстно-зависимый , нечувствительный к потоку анализ точек , [3] анализ графа вызовов и анализ доминирования (ответ на вопрос «должно ли событие a следовать за событием b ?»). У него также есть декомпилятор под названием dava.

Soot — бесплатное программное обеспечение , доступное по лицензии GNU Lesser General Public License (LGPL). В 2010 году две исследовательские работы по саже ( Vallée-Rai et al. 1999 и Pominville et al. 2000 IBM CASCON ) были выбраны в качестве статей о высоком воздействии первого десятилетия среди 12 других статей из 425 записей. [4]

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

Jimple включает всего 15 различных операций, что упрощает анализ потока. Напротив, байт-код Java включает более 200 различных операций . [5] [6]

В отличие от байт-кода Java, в Jimple локальные и стековые переменные типизированы, и Jimple по своей сути является типобезопасным.

Преобразование в Jimple, или «Jimplifying» (после «упрощения») — это преобразование байт-кода в трехадресный код. Идея преобразования, впервые исследованная Кларком Вербрюгге, заключается в том, чтобы связать переменную с каждой позицией в стеке. Следовательно, операции со стеком становятся назначениями, включающими переменные стека.

Рассмотрим следующий байт-код, взятый из [7]

iload 1  // load variable x1, and push it on the stack
iload 2  // load variable x2, and push it on the stack
iadd     // pop two values, and push their sum on the stack
istore 1 // pop a value from the stack, and store it in variable x1

Вышеупомянутое преобразуется в следующий трехадресный код:

stack1 = x1 // iload 1
stack2 = x2 // iload 2
stack1 = stack1 + stack2 // iadd
x1 = stack1 // istore 1

В общем, результирующий код не имеет статической формы единственного присваивания .

На смену Soot теперь пришла платформа SootUp, разработанная группой Secure Software Engineering Group в Университете Падерборна . [8] SootUp — это полная переработка Soot с новым дизайном, в которой больше внимания уделяется статическому анализу программ, а не оптимизации байт-кода.

  1. ^ «Soot — среда оптимизации Java» . github.com . Проверено 16 января 2024 г.
  2. ^ «Среда для анализа и преобразования приложений Java и Android» . Sable.mcgill.ca . Архивировано из оригинала 28 декабря 2008 г. Проверено 10 августа 2016 г.
  3. ^ «Учебники · Sable/soot Wiki · GitHub» . Sable.mcgill.ca . 12 января 2016 г. Проверено 10 августа 2016 г.
  4. ^ «Важнейшие документы CASCON за первое десятилетие» . Dl.acm.org . Проверено 10 августа 2016 г.
  5. ^ Валле-Рай, Раджа (1998). «Структура Джимпла» . Sable.mcgill.ca .
  6. ^ Валле-Рай, Раджа; Хендрен, Лори Дж. (1998). «Jimple: упрощение байт-кода Java для анализа и преобразований» . Sable.mcgill.ca .
  7. ^ Валле-Рай 1998 .
  8. ^ «Новая версия Soot с полностью переработанной архитектурой» . github.com . Проверено 16 января 2024 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4fe22b4f8a7864a26beb59346a288e31__1705648140
URL1:https://arc.ask3.ru/arc/aa/4f/31/4fe22b4f8a7864a26beb59346a288e31.html
Заголовок, (Title) документа по адресу, URL1:
Soot (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)