Применение статической инструментации байт-кода языка Java для динамического анализа программ

14 сентября 2018
179
Предметная область
Выходные данные
Ключевые слова
Вид публикации Статья
Контактные данные автора публикации С.П. Вартанов, М.К. Ермаков
Ссылка на публикацию в интернете www.ispras.ru/proceedings/docs/2015/27/1/isp_27_2015_1_25.pdf

Аннотация

В статье описывается подход к проведению статической инструментации байт-кода языка Java, которая используется для динамического анализа с целью поиска ошибок и уязвимостей, и их реализация в инструменте Coffee Machine.
В статье приводятся отличия методов динамического анализа от методов статического анализа. Рассмотрены особенности анализа программ, написанных на языке Java или транслируемых в Java байт-код. Описываются принципы проведения анализа и генерации входных данных для покрытия ранее не пройденных базовых блоков при помощи отслеживания потока помеченных данных, построения ограничений пути и проверки их выполнимости. Рассмотрены основные способы динамической и статической инструментации программ, приведены достоинства и недостатки подходов в рамках требований возможности проведения анализа на виртуальных машинах, интерпретирующих байт-код формата, отличного от формата Java Virtual Machine, а также обеспечения отсутствия привязки к исходному коду анализируемой программы.
На примере инструмента динамического анализа Coffee Machine показано использование статической инструментации для печати информации о выполнившихся инструкциях, отслеживания помеченных данных, построения ограничений пути выполнения, а также для построения трассы синхронизационных событий. Описаны основные особенности инструментации условных переходов и инструкций вызова метода. Также в статье приводятся ограничения выбранного метода и возможные способы обхода этих ограничений при помощи симуляции работы методов.
Подробнее
Для того чтобы оставить комментарий необходимо авторизоваться.