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

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

Аннотация

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