Поиск похожих символьных последовательностей и графов на основе методов машинного обучения тема диссертации и автореферата по ВАК РФ 05.13.17, кандидат наук Юмаганов Александр Сергеевич
- Специальность ВАК РФ05.13.17
- Количество страниц 130
Оглавление диссертации кандидат наук Юмаганов Александр Сергеевич
ВВЕДЕНИЕ
1 ПОВТОРНОЕ ИСПОЛЬЗОВАНИЕ КОДА И МЕТОДЫ ЕГО ОБНАРУЖЕНИЯ: СОВРЕМЕННОЕ СОСТОЯНИЕ
1.1 Повторное использование кода
1.1.1 Причины повторного использования кода
1.1.2 Преимущества и недостатки повторного использования кода
1.2 Поиск похожих последовательностей кода
1.3 Обзор существующих методов поиска похожих последовательностей кода в исполняемых файлах
1.3.1 Методы поиска похожих последовательностей кода на основе синтаксического анализа кода
1.3.2 Методы поиска похожих последовательностей кода на основе структурного анализа кода
1.4 Формализация задачи поиска похожих последовательностей кода
1.5 Выводы и результаты первого раздела
2 МЕТОД ПОИСКА ПОХОЖИХ СИМВОЛЬНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ В ЗАДАЧЕ ПОИСКА СХОЖИХ ФУНКЦИЙ В ИСПОЛНЯЕМЫХ ФАЙЛАХ
2.1 Основные понятия и принцип работы
2.2 Представление объектов сравнения через опорное множество объектов сравнения
2.2.1 Нормализация представления объектов сравнения
2.2.2 Построение первичных описаний объектов сравнения
2.2.3 Построение окончательного описания объектов сравнения
2.3 Поиск похожих объектов сравнения
2.4 Методы формирования опорного множества объектов сравнения
2.5 Экспериментальные исследования
2.6 Выводы и результаты второго раздела
3 МЕТОД ПОИСКА ПОХОЖИХ ГРАФОВ В ЗАДАЧЕ ПОИСКА СХОЖИХ ФУНКЦИЙ В ИСПОЛНЯЕМЫХ ФАЙЛАХ
3.1 Основные понятия и принцип работы
3.2 Построение первичных описаний объектов сравнения
3.3 Формирование промежуточного и окончательного описания объектов сравнения
3.4 Поиск похожих объектов сравнения
3.4 Экспериментальные исследования
3.4.1 Исследование эффективности предложенного метода поиска
3.4.2 Исследование эффективности двухэтапного алгоритма поиска
3.5 Выводы и результаты третьего раздела
4. МЕТОД ПОИСКА ПОХОЖИХ СИМВОЛЬНЫХ
ПОСЛЕДОВАТЕЛЬНОСТЕЙ НА ОСНОВЕ СИАМСКОЙ НЕЙРОННОЙ СЕТИ
4.1 Основные понятия и постановка задачи
4.2 Формирование первичного описания объектов сравнения
4.3 Формирование промежуточного описания объектов сравнения
4.4 Формирование окончательного описания объектов сравнения
4.5 Экспериментальные исследования
4.6 Выводы и результаты третьего раздела
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ А Разбиение команд процессора на классы
ПРИЛОЖЕНИЕ Б Свидетельство о регистрации программы для ЭВМ
ПРИЛОЖЕНИЕ В Акт об использовании результатов диссертации в
акционерном обществе «Самара-Информспутник»
ПРИЛОЖЕНИЕ Г Акт об использовании результатов диссертации в федеральном государственном автономном образовательном учреждении высшего образования «Самарский национальный исследовательский университет имени академика С.П. Королева»
ВВЕДЕНИЕ
Диссертация посвящена разработке методов поиска похожих символьных последовательностей и графов для решения задачи поиска похожих функций в исполняемых бинарных файлах.
Рекомендованный список диссертаций по специальности «Теоретические основы информатики», 05.13.17 шифр ВАК
Методы статического анализа для поиска дефектов в исполняемом коде программ2019 год, кандидат наук Асланян Айк Каренович
Статический анализ исходного и исполняемого кода на основе поиска клонов кода2025 год, кандидат наук Арутюнян Мариам Сероповна
Способы и программные средства сравнения исполняемых файлов для их оперативной кластеризации2013 год, кандидат наук Антонов, Алексей Евгеньевич
Разработка метода оценки эксплуатируемости программных дефектов2017 год, кандидат наук Федотов Андрей Николаевич
Методы оптимизации алгоритмов статического и динамического анализа программ2024 год, доктор наук Саргсян Севак Сеникович
Введение диссертации (часть автореферата) на тему «Поиск похожих символьных последовательностей и графов на основе методов машинного обучения»
Актуальность темы
Поиск похожих объектов различной природы - одна из наиболее часто решаемых практических задач: поиск текста, поиск плагиата в научных работах, поиск похожих биомолекулярных последовательностей и т.д. Для их решения объекты поиска представляются с использованием подходящих математических структур. Наиболее востребованными на практике являются представления объектов поиска в виде последовательностей или графов. В зависимости от решаемой практической задачи объектами, для которых может быть выбрано такое представление, являются: текст, веб-страницы, веб-сайты, XML документы, код программ для ЭВМ и т.д. В настоящей работе разрабатываются методы поиска похожих символьных последовательностей и графов, при этом основной практической задачей является поиск похожих функций в исполняемых файлах.
Повторное использование кода (code reuse) часто применяется программистами в процессе создания нового программного обеспечения (ПО). Согласно исследованиям [1] около 15% функций в программах с открытым исходным кодом являются повторно использованными. Такой подход позволяет разработчикам нового ПО экономить время, финансовые и трудовые ресурсы на разработке программных модулей, требуемый функционал которых ранее уже был реализован другими разработчиками. Однако, повторное использование кода также имеет некоторые недостатки. Во-первых, повторное использование кода может нарушать лицензионное соглашение на использование ПО. Во-вторых, велик риск переноса участка кода, содержащего уязвимость или ошибку. Решение задачи поиска похожих последовательностей кода в исполняемых файлах может быть применено и для выявления нарушений лицензионных соглашений, и для нахождения ошибок и уязвимостей ПО.
Кроме того, с каждым днем количество новых вредоносных программ неуклонно растет. При этом способ детектирования вредоносного программного обеспечения, основанный исключительно на сравнении сигнатур проверяемого исполняемого модуля, оказывается недостаточным. В силу того, что большая часть новых вирусов является модификацией старых, эффективным методом анализа представляется сравнение исполняемого кода с ранее встречавшимися. К сожалению, прямое сравнение последовательностей кода в силу различных причин (различные опции компиляции кода, вносимые изменения и улучшения в код вирусов и т.п.) оказывается малоэффективным. Это делает задачу построения методов высокоуровнего анализа кода все более актуальной, а применяемые средства обнаружения, основанные на методах распознавания и анализа данных [2], все более востребованными.
К настоящему моменту решению задачи поиска похожих последовательностей кода в исполняемых файлах посвящено большое количество работ в мировой печати. Все известные методы поиска похожих последовательностей кода можно условно разделить на две группы [3]: методы, основанные на анализе непосредственно ассемблерного кода (синтаксический анализ), и методы на основе сравнения графа потока управления функций (структурный анализ). Методы поиска первой чувствительны к различным изменениям непосредственно кода программы: замене команд процессора, перестановке команд, вставке новых команд, изменению статических переменных и т.д. Этого недостатка лишены методы, основанные на структурном анализе функций. Однако, и данная группа методов не лишена недостатков: высокая чувствительность к структурным изменениям, непригодность для анализа функций с малым количеством вершин в графе потока управления функции.
Таким образом, несмотря на большое количество научных работ, посвященных проблеме поиска похожих последовательностей кода, не существует универсального метода решения данной проблемы, лишенного всех недостатков.
Учитывая все изложенные выше тезисы, можно говорить об актуальности как темы диссертационной работы в целом, так и отдельных выбранных направлений исследований в частности.
Цель и задачи исследований
Целью диссертации является разработка и исследование методов поиска похожих символьных последовательностей и графов, основанных на методах машинного обучения и обладающих преимуществами перед известными по эффективности решения задачи поиска похожих функций в исполняемых файлах.
Для достижения поставленной цели в диссертации решаются следующие задачи:
1. Разработка и исследование метода поиска похожих символьных последовательностей, основанного на принципах беспризнакового распознавания.
2. Разработка и исследование метода поиска похожих графов, основанного на принципах беспризнакового распознавания.
3. Разработка и исследование метода поиска похожих символьных последовательностей, основанного на применении нейронной сети.
Методы исследований
В диссертационной работе используются методы распознавания образов, теории вероятностей, методы машинного обучения, теория графов.
Научная новизна работы
1. Разработаны новые методы поиска похожих символьных последовательностей и графов, основанные на принципах беспризнакового распознавания и косвенного описания объекта сравнения с использованием опорного множества объектов.
2. Предложены новые алгоритмы косвенного описания объектов сравнения, основанные на использовании в качестве моделей объекта символьных последовательностей и ориентированных графов.
3. Разработан двухэтапный алгоритм поиска похожих объектов, использующий последовательно структурное и синтаксическое представление объекта сравнения.
4. Предложен новый метод формирования опорного множества объектов сравнения, используемых для построения косвенных описаний, на основе генетического алгоритма.
5. Разработан новый метод поиска похожих символьных последовательностей на основе их представления с помощью сиамской нейронной сети.
Практическая значимость работы
Разработанные методы поиска могут быть использованы при сравнительном анализе текстов (в том числе при решении задачи поиска плагиата), XML документов, веб-страниц, веб-сайтов и другого рода данных, которые могут быть представлены в виде символьной последовательности и/или ориентированного графа. Кроме того, разработанные методы могут быть использованы в составе систем статического анализа кода исполняемых файлах на предмет наличия известных ошибок или уязвимостей, плагиата или вредоносного кода.
Реализация результатов работы
Результаты диссертации были использованы при выполнении следующих работ:
- в федеральном государственном автономном образовательном учреждении высшего образования «Самарский национальный исследовательский университет имени академика С.П. Королева» при выполнении договора № 152/17 от 01.11.2017;
- в АО «Самара-Информспутник» (договор № 17/2012 от 27.07.2012, договор № 5/2019 от 12.11.2019).
Апробация работы
Основные результаты диссертации были представлены на четырех научных конференциях: II Международная конференция и молодёжная школа
«Информационные технологии и нанотехнологии» (Самара, 2016), III Международная конференция и молодёжная школа «Информационные технологии и нанотехнологии» (Самара, 2017), IV Международная конференция и молодёжная школа «Информационные технологии и нанотехнологии» (Самара, 2018), V Международная конференция и молодёжная школа «Информационные технологии и нанотехнологии» (Самара, 2019).
Публикации
По теме диссертации опубликовано 11 работ. Из них 5 работ опубликованы в изданиях, входящих в международные реферативные базы данных Scopus и/или WebOfScience; одна научная статья опубликована в рецензируемом научном издании, рекомендуемом ВАК. Три работы выполнены без соавторов. Получено 1 свидетельство о регистрации программы для ЭВМ.
Структура диссертации
Диссертация состоит из четырех разделов, заключения, списка литературы из 113 наименований; изложена на 130 страницах машинописного текста, содержит 34 рисунка, 8 таблиц, 4 приложения.
На защиту выносятся
1. Методы поиска похожих символьных последовательностей и графов, основанные на принципах беспризнакового распознавания и косвенного описания объекта сравнения.
2. Алгоритмы косвенного описания объектов сравнения, основанные на представлении моделей объекта в виде символьных последовательностей и ориентированных графов.
3. Двухэтапный алгоритм поиска похожих объектов, использующий последовательно структурное и синтаксическое представление объекта сравнения.
4. Метод формирования опорного множества объектов сравнения, используемых для построения косвенных описаний, на основе генетического алгоритма.
5. Метод поиска похожих символьных последовательностей на основе их представления с помощью сиамской нейронной сети.
Краткое содержание диссертации
В первом разделе диссертации приводится оценка современного состояния задач обнаружения повторно использованного кода в исполняемых файлах, дана классификация методов решения данной задачи. Рассмотрены причины повторного использования кода разработчиками, отмечены его достоинства и недостатки. Проведен анализ существующих методов решения задачи поиска похожих фрагментов кода в исполняемых файлах. Представлен краткий обзор способов решения задачи поиска похожих фрагментов кода в формальной математической постановке. Выявлены недостатки существующих решений.
Во втором разделе диссертации представлен метод поиска похожих символьных последовательностей, основанный на принципах беспризнакового распознавания и косвенного описания объекта сравнения и предназначенный для решения задачи поиска похожих функций в исполняемых файлах. Приведена постановка задачи, введены основные определения. Предложено пять способов построения косвенного описания объектов сравнения (кода функций исполняемого файла) в виде символьной последовательности (синтаксическое описание). Для улучшения качественных показателей представленного метода поиска предложен способ формирования опорного множества объектов сравнения с использованием генетического алгоритма, используемых для построения косвенных описаний. Проведены экспериментальные исследования, в ходе которых были определены оптимальные значения параметров разработанного метода поиска и сделаны выводы о его работоспособности и эффективности.
В третьем разделе диссертации представлен метод поиска похожих графов, основанный на принципах беспризнакового распознавания и косвенного описания объекта сравнения и предназначенный для решения задачи поиска похожих функций в исполняемых файлах. Приведена постановка задачи, введены основные определения. Предложен способ построения косвенного описания объектов сравнения (функций) в виде ориентированного графа (структурное
описание). Предложен двухэтапный алгоритм поиска, использующий последовательно структурное (в виде ориентированного графа представляется граф потока управления исполнением кода функции) и синтаксическое (в виде символьной последовательности) представление объекта сравнения. Проведены экспериментальные исследования, в ходе которых были определены оптимальные значения параметров разработанного метода поиска и сделаны выводы о его работоспособности и эффективности.
Четвертый раздел диссертации посвящён разработке метода поиска похожих символьных последовательностей с использованием сиамской нейронной сети. Приведена постановка задачи, введены основные определения. Предложен способ формирования первичного описания функций в виде последовательности лексем. Для построения промежуточного описания объектов сравнения из первичного предлагается использовать модель word2vec, формирующую векторное представление лексем на основе их контекстной близости. Окончательное описание объектов сравнения формируется с помощью обученной сиамской нейронной сети. Проведены экспериментальные исследования, в ходе которых были определены оптимальные значения параметров, используемых при построении промежуточного описания объектов сравнения, и сделаны выводы о работоспособности и эффективности представленного метода поиска.
1 ПОВТОРНОЕ ИСПОЛЬЗОВАНИЕ КОДА И МЕТОДЫ ЕГО
ОБНАРУЖЕНИЯ: СОВРЕМЕННОЕ СОСТОЯНИЕ
1.1 Повторное использование кода
В настоящее время копирование фрагментов кода и последующее их повторное использование с небольшими изменениями или без них является часто используемой техникой при разработке нового программного обеспечения (ПО) [4,5]. Такой подход к разработке программного обеспечения называется повторное использование кода (code reuse). В данном разделе рассматривается низкоуровневый подход к повторному использованию кода, который заключается в простом копировании и вставке фрагментов кода программы ^opy-and-paste programming).
1.1.1 Причины повторного использования кода
Авторы [6,7] выделяют следующие причины, по которым разработчики используют данный подход:
- особенности используемой парадигмы программирования;
- особенности сопровождения ПО;
- ограничения языков программирования и разработчиков;
- случайное повторное использование кода.
Особенности используемой парадигмы программирования
Разработчики ПО могут повторно использовать код в силу особенностей применяемого ими подхода к созданию нового ПО.
Например, при порождающем программировании (generative programming) код автоматически сгенерированного программного продукта может содержать большое число копий из разработанных ранее таким же образом программ. Это происходит из-за того, что при данном подходе часто используются одни и те же компоненты (модули) в процессе разработки различных программ.
В том случае, если требуется объединить два программных продукта, имеющих схожие функции и назначение, в один новый продукт, в нем так же
возможно появление большого числа копий исходного кода. Хотя эти программы могли разрабатываться разными группами программистов, копии кода могут образовываться в объединенной программной системе из-за наличия реализаций схожих функций в обеих исходных программах.
Особенности сопровождения ПО
Ранее использованный код может использоваться повторно для облегчения сопровождения ПО.
Копии исходного кода часто встречаются в финансовом программном обеспечении, поскольку для них часто выпускаются обновления, добавляющие новый функционал, схожий с имеющимся [8]. Разработчику часто приходится повторно использовать существующий код путем копирования и адаптации к требованиям нового продукта из-за высокого риска ошибок при разработке кода с нуля. Финансовые потери из-за ошибок программного обеспечения могут быть очень большими, и поскольку существующий код уже хорошо протестирован (70% объема работ по сопровождению программного обеспечения в финансовой сфере расходуется на тестирование) он и используется.
Поскольку две копии одного фрагмента кода не зависят друг от друга как синтаксически, так и семантически, они могут быть изменены независимо, не затрагивая друг друга, и тестирование требуется только для измененного фрагмента. Таким образом, сохранение клонированных фрагментов в системе может ускорить обслуживание, особенно при отсутствии автоматических регрессионных тестов.
В целях обеспечения надежности в жизненно важных системах преднамеренное использование копий кода учитывается уже на этапе проектирования программной системы. В таких системах программные модули, имеющие одни и те же функциональные возможности, часто разрабатываются разными командами разработчиков, чтобы снизить вероятность того, что итоговая реализации потерпит неудачу при одинаковых обстоятельствах.
В программных системах реального времени вызовы функций могут существенно увеличить время исполнения кода. Поэтому в том случае, если
компилятор не преобразует функции во встраиваемые (inline), это необходимо будет сделать разработчику вручную. Вследствие чего, появляется повторно используемый код.
Ограничения языков программирования и разработчиков
В ходе разработки программного обеспечения ранее использованный код может быть применен повторно из-за особенностей используемого языка программирования.
Например, некоторые языки программирования не имеют достаточных средств абстракции, например, наследования, универсальных типов (называемых шаблонами в C ++) или передачи параметров, и, следовательно, разработчики должны неоднократно реализовывать их. Такие повторяющиеся действия способствуют частому использованию одинаковых фрагментов кода [9,10] .
Так же имеют место ограничения, связанные с человеческим фактором. Примерами таких ограничений являются:
- Трудность в понимании большой программной системы. Часто разработчикам бывает сложно разобраться в особенностях проектирования больших программных систем. Это заставляет их использовать доступные примеры готовых аналогичных программных продуктов путем адаптации их кода.
- Временные ограничения на разработку. Одной из основных причин повторного использования кода при разработке ПО является ограничение времени, предоставленного разработчикам. Во многих случаях разработчикам назначается определенный срок на выполнение проекта или его части. Из-за этого ограничения времени разработчики ищут простой и быстрый способ решения имеющихся проблем и, следовательно, ищут аналогичные существующие решения.
- Недостаток знаний у разработчика. Иногда разработчик не знаком с проблемной областью и поэтому ищет существующие решения подобных проблем. Как только такое решение найдено, разработчик просто адаптирует существующее решение к своим задачам.
Случайное повторное использование кода
В некоторых ситуациях разработчики могут случайно повторно использовать код программы, даже не подозревая об этом.
Для использования определенного API обычно требуется ряд вызовов функций или выполнение некоторой последовательности команд. В случае использования нескольких сторонних библиотек разработчики могут использовать похожий код для взаимодействия с этими библиотеками, не обращая на это внимание [11].
Другим примером случайного повторного использования кода служит программная реализация схожего функционала, используемого в разных модулях одного программного продукта, независимо разными разработчиками. Разработчики также могут непреднамеренно повторить решение той или иной задачи, используя общий шаблон решения.
1.1.2 Преимущества и недостатки повторного использования кода
Несмотря на то, что копирование кода часто применяется на практике, такой подход может оказать серьезное влияние на качество, возможность повторного использования и удобство сопровождения программной системы. Ниже перечислены некоторые недостатки низкоуровневого повторного использования кода в ПО [6,7]:
- Высокая вероятность распространения ошибки. Если фрагмент кода содержит ошибку, и этот фрагмент используется повторно при копировании и вставке даже с незначительными изменениями, ошибка исходного фрагмента может перенестись во все вставленные его копии. Тем самым увеличивается вероятность распространения ошибки в целевой системе [12, 13].
- Возможность появления новых ошибок. В процессе адаптации копируемого фрагмента кода к требованиям целевой программной системы высока вероятность появления новых ошибок, отсутствующих в копируемом фрагменте кода [14, 15].
- Сложность в изменении кода программ. В том случае, если код программы содержит копии, разработчикам требуется больше времени, чтобы понять особенности реализации каждого экземпляра копии кода, при добавлении новых функциональных возможностей в программу [16, 17].
- Высокие затраты на сопровождение ПО. Если в скопированном фрагменте кода обнаружена ошибка, необходимо проверить все его копии на предмет исправления данной ошибки, поскольку нет гарантии, что эта ошибка уже была устранена в этих копиях [17, 18].
- Повышенные требования к ресурсам. Дублирование кода увеличивает размер программной системы, что является критичным для некоторых устройств. Кроме того использование копий фрагментов кода увеличивает время компиляции ПО.
Помимо перечисленных выше недостатков от повторного использования кода, можно выделить и ряд преимуществ, которые дает такой подход к созданию программ. Согласно исследованиям [12, 16] к таким преимуществам относятся:
- Низкие временные затраты на разработку кода.
- Повышение производительности. В некоторых случаях замена вызовов функций на копии их кода позволяют повысить производительность вычислений в программе.
- В некоторых языках программирования это единственный способ добавления новых функциональных возможностей.
1.2 Поиск похожих последовательностей кода
Методы и алгоритмы поиска похожих последовательностей кода используются для решения целого ряда задач. Авторы [6] выделяют следующие прикладные задачи, решаемые с помощью данных методов и алгоритмов:
- Обнаружение похожих фрагментов исходного кода с целью его дальнейшего рефакторинга.
- Обнаружение потенциально библиотечных функций. Авторы [19,20] заметили, что фрагмент кода, который был скопирован и повторно
использован в системе несколько раз, очевидно, доказывает его удобство использования. Поэтому этот фрагмент может быть включен в библиотеку для дальнейшего применения.
- Облегчение анализа неизвестного кода. При проведении анализа неизвестного разработчику фрагмента кода, он может найти его копию среди архива, содержащего множество известных и хорошо описанных фрагментов кода. Используя полученную информацию, разработчик сможет быстро разобраться в ранее неизвестном ему коде.
- Обнаружение вредоносного программного обеспечения. Методы поиска похожих последовательностей кода могут использоваться для обнаружения вредоносного ПО или вредоносных фрагментов кода, путем сравнения с кодом известных образцов вредоносных программ.
- Обнаружение плагиата и нарушений авторских прав.
- Обнаружение известных уязвимостей.
- Инструмент исследования эволюции ПО [21,22] .
- Уменьшение размера кода. В том случае, когда к разрабатываемому ПО предъявляется требование по ограничению размера кода, нахождение похожих фрагментов кода может помочь найти код, размер которого можно уменьшить [23, 24].
Исходными данными для названных выше прикладных задач, решаемых с помощью методов поиска похожих последовательностей кода, может быть как исходный код, так и бинарный код программ.
В большинстве случаев при решении задач, связанных с рефакторингом кода, исходный код программы является доступным для проведения анализа. Методы поиска похожих последовательностей кода в исполняемых файлах чаще всего используются, когда для исследования доступен только бинарный исполняемый файл программы. Для данной группы методов можно выделить три основных прикладных задачи, решаемых ими:
- обнаружение и анализ вредоносных программ;
- обнаружение уязвимостей и ошибок в коде;
- поиск плагиата и нарушений лицензии ПО.
Обнаружение и анализ вредоносных программ Методы поиска похожих последовательностей кода могут использоваться для обнаружения вредоносного ПО. Согласно исследованиям [25] многие новые вредоносные программы представляют собой модифицированные копии выпущенных ранее вредоносных программ. Таким образом, методы поиска похожих последовательностей кода совместно с базой известных вредоносных программ можно использовать для обнаружения ранее не исследованных вредоносных программ [26,27,28].
Кроме того, такие методы могут использоваться в составе систем обнаружения вторжений. Например, авторы [29] использовали метод, основанный на сравнении сигнатур, для детектирования аномального поведения программ, которое может быть вызвано вредоносным ПО, в распределенной вычислительной системе. В данном случае использовался другой подход: сравнивались сигнатуры запущенного процесса программы и его локальной копии в виде исполняемого файла.
Методы поиска похожих последовательностей кода применяются также для анализа и обнаружения полиморфных вредоносных программ, в которых исполняемый код формируется во время его исполнения с помощью специальной процедуры [26,30,31]. Несмотря на то, что код двух экземпляров одной такой вредоносной программы может сильно различаться, схожее структурное описание в виде графа потока управления и нормализация кода позволяют обнаружить полиморфные вирусы и классифицировать их в целях их дальнейшего исследования.
Обнаружение уязвимостей и ошибок в коде Для обнаружения известных ошибок и уязвимостей в исполняемых файлах с помощью методов и алгоритмов поиска похожих последовательностей кода в большинстве случаев используется следующий подход [32,33]. Сначала
формируется база данных, содержащая фрагменты кода с известными ошибками и уязвимостями. В этой базе данных такие фрагменты кода хранятся в виде описания, соответствующем методу (алгоритму) поиска. При анализе некоторого исполняемого файла для заданного фрагмента его кода формируется аналогичным образом его описание. Это описание сравнивается поочередно с описанием каждого фрагмента кода из базы данных. Если значение метрики схожести двух фрагментов выше (ниже) заданного порогового значения, то эти фрагменты считаются схожими, следовательно, данный фрагмент кода анализируемого исполняемого файла содержит соответствующую ошибку или уязвимость.
Похожие диссертационные работы по специальности «Теоретические основы информатики», 05.13.17 шифр ВАК
Применение диверсифицирующих преобразований для защиты от эксплуатации уязвимостей2021 год, кандидат наук Нурмухаметов Алексей Раисович
Методы декомпиляции объектного кода Delphi2017 год, кандидат наук Михайлов, Андрей Анатольевич
Методика идентификации исполняемых файлов на основе статического анализа характеристик дизассемблированного кода программ2020 год, кандидат наук Салахутдинова Ксения Иркиновна
Методы поиска клонов кода и семантических ошибок на основе семантического анализа программы2016 год, кандидат наук Саргсян Севак Сеникович
Модель, алгоритмы и программный комплекс для автоматизированного поиска уязвимостей в исполняемом коде2016 год, кандидат наук Шудрак Максим Олегович
Список литературы диссертационного исследования кандидат наук Юмаганов Александр Сергеевич, 2020 год
СПИСОК ЛИТЕРАТУРЫ
1. Zaimi, A. An empirical study on the reuse of third-party libraries in open-source software development / A. Zaimi, A. Ampatzoglou, N. Triantafyllidou, A. Chatzigeorgiou, A. Mavridis, T. Chaikalis, I. Deligiannis, P. Sfetsos, I. Stamelos // Proceedings of the 7th Balkan Conference on Informatics Conference. - 2015. -Vol. 4. - P. 1-8.
2. Simeone, O. A Brief Introduction to Machine Learning for Engineers / O. Simeone // FNT in Signal Processing . - 2018. - Vol. 12(3-4). - P. 200-431.
3. David, Y. Tracelet-based code search in executables / Y. David and E. Yahav // ACM SIGPLAN Notices . - 2014. - Vol. 49(6). - P. 349-360.
4. Abdalkareem, R. On code reuse from StackOverflow: An exploratory study on Android apps / R. Abdalkareem, E. Shihab, J. Rilling // Information and Software Technology. - 2017. - Vol. 88. - P. 148-158.
5. Gharehyazie, M. Some from here, some from there: cross-project code reuse in GitHub / M. Gharehyazie, B. Ray, V. Filkov // Proceedings of the 14th International Conference on Mining Software Repositories (MSR '17). - 2017. - P. 291-301.
6. Roy C.K. and Cordy J.R. A survey on software clone detection research // Queen's School of computing (Technical Reports) [Электронный ресурс]. 2007. - URL: http://research.cs.queensu.ca/TechReports/Reports/2007-541 .pdf (дата обращения: 18.11.2019).
7. Rattan, D. Software clone detection: A systematic review / D. Rattan, R. Bhatia, M. Singh // Information and Software Technology. - 2013. - Vol. 7. - P. 11651199.
8. Cordy, J.R. Comprehending reality: Practical challenges to software maintenance automation / J.R. Cordy // Proceedings of the 11th IEEE International Workshop on Program Comprehension (IWPC'03). - 2003. - P. 196-206.
9. Patenaude,J.-F. Extending software quality assessment techniques to java systems / J.-F. Patenaude, E. Merlo, M. Dagenais, and B. Lague // Proceedings of the 7th
International Workshop on Program Comprehension (IWPC'99). - 1999. - P. 4956.
10. Basit, H. Beyond Templates: a Study of Clones in the STL and Some General Implications / H. Basit, D. Rajapakse, S. Jarzabek // Proceedings of the 27th International Conference on Software Engineering (ICSE'05) . - 2005. - P. 15-21
11. Kapser, C. "clones considered harmful" considered harmful / C. Kapser and M. W. Godfrey // Proceedings of the 13th Working Conference on Reverse Engineering (WCRE'06) . - 2006. - P. 19-28.
12. Johnson, H. Identifying Redundancy in Source Code Using Fingerprints / H. Johnson // Proceeding of the 1993 Conference of the Centre for Advanced Studies Conference (CASCON'93). - 1993. - P. 171-183
13. Li, Z. CP-Miner: Finding Copy-Paste and Related Bugs in Large-Scale Software Code / Z. Li, S. Lu, and S. Myagmar // IEEE Transactions on Software Engineering. - 2006. - Vol. 32(3). - P. 176-192
14. Johnson, H. Navigating the textual redundancy Web in legacy source /H. Johnson // Proceedings of the 1996 Conference of the Centre for Advanced Studies on Collaborative Research (CASCON'96). - 1996. - P. 7-16
15. Baxter, I. Clone Detection Using Abstract Syntax Trees / I. Baxter, A. Yahin, L. Moura, M. S. Anna // Proceedings of the 14th International Conference on Software Maintenance (ICSM'98). - 1998. - P. 368-377.
16. Johnson, J. Substring Matching for Clone Detection and Change Tracking /J. Johnson // Proceedings of the 10th International Conference on Software Maintenance. - 1994. - P. 120-126
17. Mayrand, J. Experiment on the Automatic Detection of Function Clones in a Software System Using Metrics / J. Mayrand, C. Leblanc, E. Merlo // Proceedings of the 12th International Conference on Software Maintenance (ICSM'96). - 1996. - P. 244-253.
18. Monden, A. Software quality analysis by code clones in industrial legacy software / A. Monden, D. Nakae,T. Kamiya,S. Sato,K. Matsumoto // Proceedings of 8th
IEEE International Symposium on Software Metrics (METRICS'02) . - 2002. - P. 87-94.
19. Burd, E. Investigating the maintenance implications of the replication of code / E. Burd and M. Munro // Proceedings of the 13th International Conference on Software Maintenance (ICSM'97) . - 1997. - P. 322-329.
20. Davey, N. The Development of a Software Clone Detector / N. Davey, P. Barson, S. Field, R. J. Frank //International Journal of Applied Software Technology . -1995. - Vol. 1. - P. 219-236.
21. Duala-Ekoko, E. Tracking Code Clones in Evolving Software / E. Duala-Ekoko, M. Robillard // Proceedings of the 29th International Conference on Software Engineering (ICSE'07) . - 2007. - P. 158-167.
22. Merlo, E. Investigating large software system evolution: the linux kernel / E. Merlo, M. Dagenais, P. Bachand, J.S. Sormani, S. Gradara, and G. Antoniol // Proceedings of the 26th International Computer Software and Applications Conference (COMPSAC'02) . - 2002. - P. 421-426.
23. Chen, W-K. Code Compaction of Matching Single-Entry MultipleExit Regions / W-K. Chen, B. Li, and R. Gupta // Proceedings of the 10th Annual International Static Analysis Symposium ( SAS'03 ). - 2003. - P. 401-417.
24. Debray, S. K. Compiler techniques for code compaction / S. K. Debray, W. Evans, R. Muth, and B. D. Sutter // ACM Transactions on Programming Languages and Systems (TOPLAS'OO). - 2000. - Vol. 22(2). - P. 378-415.
25. Examining Code Reuse Reveals Undiscovered Links Among North Korea's Malware Families // McAfee Blog [Электронный ресурс]. 2018. - URL: https://www.mcafee.com/blogs/other-blogs/mcafee-labs/examining-code-reuse-reveals-undiscovered-links-among-north-koreas-malware-families/ (дата обращения: 08.04.2020).
26. Farhadi, M. Scalable code clone search for malware analysis / M. Farhadi, B. Fung, Y. Fung, P. Charland, S. Preda, and M. Debbabi // Digital Investigation: The International Journal of Digital Forensics & Incident Response. - 2015. - Vol. 15. - P. 46-60.
27. Jang, J. BitShred: feature hashing malware for scalable triage and semantic analysis / J. Jang, D. Brumley, and S. Venkataraman // Proceedings of the 18th ACM Conference on Computer and Communications Security . - 2011. - P. 309320
28. Briones, I. Graphs, entropy and grid computing: Automatic comparison of malware / I. Briones , A. Gomez // Proceedings of the 2008 Virus Bulletin Conference. - 2008. - P. 1-12.
29. S. Aditham, N. Ranganathan A Novel Control-flow based Intrusion Detection Technique for Big Data Systems // arXiv.org [Электронный ресурс]. 2016. -URL: https://arxiv.org/pdf/1611.07649.pdf (дата обращения: 18.11.2019).
30. Bruschi, D. Code Normalization for Self-Mutating Malware / D. Bruschi, L. Martignoni, M. Monga // IEEE Security & Privacy . - 2007. - Vol. 5(2). - P. 4654.
31. Kruegel, C. Polymorphic worm detection using structural information of executables / C. Kruegel , E. Kirda, D. Mutz, W. Robertson, G. Vigna // Lecture Notes in Computer Science. - 2005. - Vol. 3858. - P. 207-226.
32. Eschweiler, S. discovRE: Efficient Cross-Architecture Identification of Bugs in Binary Code / S. Eschweiler, K. Yakdan, and E. Gerhards-Padilla // Proceedings 2016 Network and Distributed System Security Symposium . - 2016.
33. Feng, Q. Scalable Graph-based Bug Search for Firmware Images / Q. Feng, R. Zhou, C. Xu, Y. Cheng, B. Testa, and H. Yin // Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security . - 2016. - P. 480-491.
34. Flake, H. Structural Comparison of Executable Objects / H. Flake // Proceedings of the IEEE Conference on Detection of Intrusions and Malware & Vulnerability Assessment (DIMVA) . - 2004. - P. 161-173
35. Synopsys Cybersecurity Research Center: 2019 Open source security and risk analysis // Synopsys [Электронный ресурс]. 2019. - URL: https://www.synopsys.com/content/dam/synopsys/sig-assets/reports/rep-ossra-19.pdf (дата обращения: 08.04.2020).
36. Hemel, A. Finding software license violations through binary code clone detection / A. Hemel, K. T. Kalleberg, R. Vermaas, and E. Dolstra // Proceeding of the 8th working conference on Mining software repositories . - 2011. - P. 63-72.
37. Rosenblum, N. Who Wrote This Code? Identifying the Authors of Program Binaries / N. Rosenblum, X. Zhu, and B. P. Miller // ESORICS'11: Proceedings of the 16th European conference on Research in computer security . - 2011. - P. 172189.
38. Luo, L. Semantics-Based Obfuscation-Resilient Binary Code Similarity Comparison with Applications to Software and Algorithm Plagiarism Detection / L. Luo, J. Ming, D. Wu, P. Liu, and S. Zhu // IEEE Transactions on Software Engineering . - 2017. - Vol. 43(12). - P. 1157-1177.
39. Verdi M., Sami A., Akhondali J., Khomh F., Uddin G., and Karami A. An Empirical Study of C++ Vulnerabilities in Crowd-Sourced Code Examples// arXiv.org [Электронный ресурс]. 2019. - URL: https://arxiv.org/pdf/1910.01321 (дата обращения: 18.11.2019).
40. Koschke, R. Clone Detection Using Abstract Syntax Suffix Trees / R. Koschke, R. Falke, and P. Frenzel // Proceeding of the 13th Working Conference on Reverse Engineering . - 2006. - P. 253-262.
41. IDA F.L.I.R.T Technology: In-Depth // Hex-Rays [Электронный ресурс]. 2015. URL: https://www.hex-rays.com/products/ida/tech/flirt/in_depth/ (дата обращения 18.11.2019).
42. IDA Pro // Hex-Rays [Электронный ресурс]. 2020. URL: https://www.hex-rays.com/products/ida/ (дата обращения 18.11.2019).
43. Rahimian, A. RESource: A Framework for Online Matching of Assembly with Open Source Code / A. Rahimian, P. Charland, S. Preda, and M. Debbabi // Foundations and Practice of Security . - 2013. - P. 211-226.
44. FCatalog // xorpd [Электронный ресурс]. 2020. URL: https://www.xorpd.net/pages/fcatalog.html (дата обращения 18.11.2019).
45. Myles, G. K-gram based software birthmarks / G. Myles and C. Collberg // Proceedings of the 2005 ACM symposium on Applied computing . - 2005. - P. 314-318.
46. Karim, M. E. Malware phylogeny generation using permutations of code / M. E. Karim, A. Walenstein, A. Lakhotia, and L. Parida // Journal in Computer Virology . - 2017. - Vol. 1. - P. 13-23.
47. Schulman, A. Finding binary clones with opstrings & function digests: Part III / A. Schulman// Doctor Dobbs Journal . - 2005.
48. Xue, H. Clone-hunter: accelerated bound checks elimination via binary code clone detection / H. Xue, G. Venkataramani, and T. Lan // Proceedings of the 2nd ACM SIGPLAN International Workshop on Machine Learning and Programming Languages . - 2018. - P. 11-19.
49. Shalev, N. Binary Similarity Detection Using Machine Learning / N. Shalev and N. Partush // Proceedings of the 13 th Workshop on Programming Languages and Analysis for Security . - 2018. - P. 42-47.
50. Zuo F., Li X., Young P., Luo L., Zeng Q., Zhang Z. Neural Machine Translation Inspired Binary Code Similarity Comparison beyond Function Pairs // arXiv.org [Электронный ресурс]. 2018. - URL: https://arxiv.org/pdf/1808.04706 (дата обращения: 18.11.2019).
51. Mikolov T., Chen K, Corrado G, Dean J. Efficient Estimation of Word Representations in Vector Space // arXiv.org [Электронный ресурс]. 2013. -URL: https://arxiv.org/pdf/1301.3781 (дата обращения: 18.11.2019).
52. S^bj0rnsen, A. Detecting code clones in binary executables / A. S^bj0rnsen, J. Willcock, T. Panas, D. Quinlan, and Z. Su // Proceedings of the eighteenth international symposium on Software testing and analysis . - 2009. - P. 117-128.
53. Khoo, W. M. Rendezvous: A search engine for binary code / W. M. Khoo, A. Mycroft, and R. Anderson // Proceedings of the 10th Working Conference on Mining Software Repositories . - 2013. - P. 329-338.
54. Dullien T., Carerra E., Eppler S.M., Porst S. Automated Attacker Correlation for Malicious Code // NATO Science and Technology Organization [Электронный
ресурс]. 2010. - URL:
https://www.sto.nato.int/publications/ST0%20Meeting%20Proceedings/RT0-MP-IST-091/MP-IST-091-26.pdf (дата обращения: 18.11.2019).
55. Hu, Y. Binary Code Clone Detection across Architectures and Compiling Configurations / Y. Hu, Y. Zhang, J. Li, and D. Gu // Proceedings of the 25th International Conference on Program Comprehension . - 2017. - P. 88-98.
56. Xu X., Liu C., Feng Q., Yin H., Song L., Song D. Neural Network-based Graph Embedding for Cross-Platform Binary Code Similarity Detection// arXiv.org [Электронный ресурс]. 2018. - URL: https://arxiv.org/pdf/1708.06525 (дата обращения: 18.11.2019).
57. Baldoni R., Di Luna G. A., Massarelli L., Petroni F., Querzoni L. Unsupervised Features Extraction for Binary Similarity Using Graph Embedding Neural Networks// arXiv.org [Электронный ресурс]. 2018. - URL: https://arxiv.org/pdf/1810.09683 (дата обращения: 18.11.2019).
58. Yu, M. String similarity search and join: a survey / M. Yu, G. Li, D. Deng, and J. Feng // Frontiers of Computer Science. - 2015. - Vol. 10(3). - P. 399-417.
59. Levenshtein, V. Binary codes capable of correcting deletions, insertions, and reversals / V. Levenshtein // Doklady Akademii Nauk SSSR. — 1965. — Vol. 163(4). — P. 845-848.
60. Damerau, F.J. A technique for computer detection and correction of spelling errors / F. J. Damerau // Communications of the ACM . - 1964. - Vol. 7(3). - P. 171176.
61. Needleman, S.B. A general method applicable to the search for similarities in the amino acid sequence of two proteins / S. B. Needleman and C. D. Wunsch // Journal of Molecular Biology . - 1970. - Vol. 48(3). - P. 443-453.
62. Smith, T. F. Identification of common molecular subsequences / T. F. Smith and M. S. Waterman // Journal of Molecular Biology . - 1981. - Vol. 147(1). - P. 195197.
63. Sulimova, V. V. Metrics on the basis of optimal alignment of biomolecular sequences / V.V. Sulimova1, O.S. Seredin1, V.V. Mottl // Machine Learning and Data Analysis. - 2016. - Vol. 2(3). - P. 286-304.
64. Jaro, M. A. Advances in Record-Linkage Methodology as Applied to Matching the 1985 Census of Tampa, Florida / M. A. Jaro // Journal of the American Statistical Association . - 1989. - Vol. 84(406). - P. 414-420.
65. Winkler, W. E. String Comparator Metrics and Enhanced Decision Rules in the Fellegi-Sunter Model of Record Linkage / W. E. Winkler // Proceedings of the Section on Survey Research . - 1990. - P. 354-359.
66. Jaccard, P. Étude comparative de la distribution florale dans une portion des Alpes et du Jura / P. Jaccard // Bulletin del la Société Vaudoise des Sciences Naturelles . - 1901. - Vol. 37. - P. 547-579.
67. Dice, L. R. Measures of the Amount of Ecologic Association Between Species / L. R. Dice // Ecology . - 1945. - Vol. 26(3). - P. 297-302.
68. Metzler, D. Similarity measures for tracking information flow / D. Metzler, Y. Bernstein, W. B. Croft, A. Moffat, and J. Zobel // Proceedings of the 14th ACM international conference on Information and knowledge management . - 2005. - P. 517-524.
69. Malakasiotis, P. Learning textual entailment using SVMs and string similarity measures / P. Malakasiotis and I. Androutsopoulos // Proceedings of the ACL-PASCAL Workshop on Textual Entailment and Paraphrasing . - 2007. - P. 42-47.
70. Chaudhuri, S. Robust and efficient fuzzy match for online data cleaning / S. Chaudhuri, K. Ganjam, V. Ganti, and R. Motwani // Proceedings of the 2003 ACM SIGMOD international conference on on Management of data . - 2003. - P. 313324.
71. Wang, J. Fast-join: An efficient method for fuzzy token matching based string similarity join / J. Wang, G. Li, and J. Fe // Proceedings of the 27th International Conference on Data Engineering . - 2011. - P. 458-469.
72. Read, R. C. The graph isomorphism disease / R. C. Read and D. G. Corneil // Journal of Graph Theory. - 1977. - Vol. 1(4). - P. 339-363.
73. Hopcroft, J. E. Linear time algorithm for isomorphism of planar graphs (Preliminary Report) / J. E. Hopcroft and J. K. Wong // Proceedings of the sixth annual ACM symposium on Theory of computing. - 1974. - P. 172-184.
74. Luks, E. M. Isomorphism of graphs of bounded valence can be tested in polynomial time / E. M. Luks // Journal of Computer and System Sciences . -1982. - Vol. 25(1). - P. 42-65.
75. Гери, М. Вычислительные машины и труднорешаемые задачи / М. Гэри, Д. Джонсон ; пер. с англ. - М. : Мир, 1982. - 416 с.
76. Neuhaus, M. Edit distance-based kernel functions for structural pattern classification / M. Neuhaus and H. Bunke // Pattern Recognition. - 2006. - Vol. 39(10). - P. 1852-1863.
77. Koch, I. Enumerating all connected maximal common subgraphs in two graphs / I. Koch // Theoretical Computer Science . - 2001. - Vol. 250(1-2). - P. 1-30.
78. Bron, C. Algorithm 457: finding all cliques of an undirected graph / C. Bron and J. Kerbosch // Communications of the ACM . - 1973. - Vol. 16(9). - P. 575-577.
79. Liang, H. PGC-1a: a key regulator of energy metabolism / ]H. Liang and W. F. Ward // Advances in Physiology Education . - 2006. - Vol. 30(4). - P. 145-151.
80. Bunke, H. Inexact graph matching for structural pattern recognition / H. Bunke and G. Allermann // Pattern Recognition Letters . - 1983. - Vol. 1(4). - P. 245-253.
81. Bunke, H. Recognition of cursive Roman handwriting: past, present and future / H. Bunke // Proceedings of the Seventh International Conference on Document Analysis and Recognition . - 2003. - P. 448-459.
82. Wiener, H. Structural Determination of Paraffin Boiling Points / H. Wiener // Journal of the American Chemical Society. - 1947. - Vol. 69(1). - P. 17-20.
83. Morgan, H. L. The Generation of a Unique Machine Description for Chemical Structures-A Technique Developed at Chemical Abstracts Service / H. L. Morgan // Journal of Chemical Documentation. - 1965. - Vol. 5(2). - P. 107-113.
84. Randic, M. Characterization of molecular branching / M. Randic // Journal of the American Chemical Society. - 1975. - Vol. 97(23). - P. 6609-6615.
85. x86 Assembly Language Reference Manual [Электронный ресурс]. - 2010. -URL: https://docs.oracle.com/cd/E19253-01/817-5477/817-5477.pdf (дата обращения: 18.11.2019).
86. Фукунага К. Введение в статистическую теорию распознавания образов [Текст]: Пер. с англ./К. Фукунага - М.: Наука. Главная редакция физико-математической литературы, 1979, - 171-173 c.
87. Hirschberg, D.S. A linear space algorithm for computing maximal common subsequences / D.S Hirschberg //. Communications of the ACM - Vol. 18(6). -1975. - P. 341-343.
88. Wagner, R. The String-to-String Correction Problem / R. Wagner and M. Fischer // Journal of the ACM . - 1974. - Vol. 21(1). - P. 168-173.
89. Pearson K. On lines and planes of closest fit to systems of points in space / K. Pearson // Philosophical Magazine. - 1901 . - Vol. 2. - P. 559-572.
90. Duin, R.P.W. Featureless Classification / R.P.W. Duin, D. de Ridder, D.M.J. Tax // Kybernetica. - 1998. - Vol. 34. No. 4. P.399-404.
91. Holland, J.H. Adaptation in natural and artificial systems / J.H. Holland // University of Michigan Press, Ann Arbor. - 1975. - 96 р.
92. Buckland, M.K. The relationship between recall and precision/ M.K. Buckland, F.C. Gey // JASIS. - 1994. - Vol. 45. No. 1. - P. 12-19.
93. Powers, D. M. W. Evaluation: From Precision, Recall and F-Measure to ROC, Informedness, Markedness & Correlation. // Journal of Machine Learning Technologies. - 2011. - Vol. 2. No. 1. - P. 37-63.
94. LibTIFF - TIFF Library and Utilities [Электронный ресурс]. 2019. URL: http://www.libtiff.org/. (дата обращения 18.11.2019).
95. curl - Command line tool and library [Электронный ресурс]. 2019. URL: https://curl.haxx.se/. (дата обращения 18.11.2019).
96. Marron, J.S. Canonical kernels for density estimation / Marron, J. S. , Nolan, D. // Statistics & Probability Letters 7. - 1989. - P. 195-199.
97. Юмаганов, А.С. Поиск похожих последовательностей кода программ с использованием методов беспризнакового распознавания / А.С. Юмаганов,
В.В. Мясников // Сборник материалов международной конференции и молодежной школы «Информационные технологии и нанотехнологии» (ИТНТ-2016). - Самара: Самарский государственный аэрокосмический университет, 2016. - С. 424-430.
98. Юмаганов, А.С. Метод поиска похожих последовательностей кода в исполняемых бинарных файлах с использованием беспризнакового подхода / А.С. Юмаганов, В.В. Мясников // Компьютерная Оптика. - 2017. - Т. 41. -No 5. - С. 756-764.
99. Юмаганов, А.С. Сравнение способов первичного описания кода программы в задаче поиска похожих последовательностей кода / А.С. Юмаганов, В.В. Мясников // Информационные технологии и нанотехнологии (ИТНТ-2017): сборник трудов III международной конференции и молодежной школы. -Самара: Новая техника, 2017. - С. 940-945.
100. Yumaganov, A.S. Similarity search over program code sequences using featureless pattern recognition techniques / A.S. Yumaganov, V.V. Myasnikov // CEUR Workshop Proceedings International Conference Information Technology and Nanotechnology (ITNT 2016). - 2016. - Vol. 1638. - P. 437-443.
101. Yumaganov, A.S. Comparison of the ways of the program's code initial description in the problem of similar code sequences search / A.S. Yumaganov, V.V. Myasnikov // Procedia Engineering 3rd International Conference "Information Technology and Nanotechnology", ITNT-2017, 25-27 April 2017, Samara, Russia. - 2017. - Vol. 201. - P. 445-452.
102. Юмаганов, А.С. Метод формирования базисной библиотеки функций в задаче поиска похожих последовательностей кода / А.С. Юмаганов // Труды Международной научно-технической конференции «Перспективные информационные технологии» (ПИТ 2020). - 2020. - Самара: Самарский научный центр РАН. - С. 199-202.
103. Spath, H. The minisum location problem for the Jaccard metric / H. Spath // Operations Research-Spektrum . - 1981. - Vol. 3. - P. 91-94.
104. Юмаганов, А.С. Поиск похожих последовательностей кода в исполняемых файлах на основе структурного анализа функций / А.С. Юмаганов, В.В. Мясников // Информационные технологии и нанотехнологии (ИТНТ-2018): сборник трудов IV международной конференции и молодежной школы. -Самара: Новая техника, 2018. - С. 2429-2436.
105. Юмаганов, А.С. Комбинированный метод поиска похожих последовательностей кода в исполняемых файлах / А.С. Юмаганов // Сборник трудов V международной конференции и молодежной школы «Информационные технологии и нанотехнологии» (ИТНТ-2019) Международная конференция и молодежная школа «Информационные технологии и нанотехнологии» (ИТНТ-2019). - Самара: Новая техника, 2019. - Т. 4. - С. 639-646.
106. Yumaganov, A.S. Searching for similar code sequences in executable files based on the structural analysis of functions /A.S. Yumaganov, V.V. Myasnikov // Journal of Physics: Conference Series. - 2018. - Т. 1096.
107. Yumaganov, A.S. A combined method of similar code sequences search in executable files / A.S. Yumaganov // CEUR Workshop Proceedings International Conference Information Technology and Nanotechnology (ITNT 2019). - 2019. -Vol. 2416. - P. 394-400.
108. Bromley, J. Signature verification using a "Siamese" time delay neural network /J. Bromley, I. Guyon, Y. LeCun, E. Säckinger, R. Shah // Proceedings of the 6th International Conference on Neural Information Processing Systems. - 1994. - P. 737-744.
109. Hochreiter, S. Long Short-Term Memory / S. Hochreiter, J. Schmidhuber // Neural Comput. . - 1997. - Vol. 9. - P. 1735-1780.
110. Hadsell, R. Dimensionality Reduction by Learning an Invariant Mapping /R. Hadsell, S. Chopra, Y. LeCun // IEEE Computer Society - 2006. - Vol. 2. - P. 1735-1742.
111. PROJ - Coordinate transformation software library [Электронный ресурс]. 2019. URL: https://proj.org/about.html . (дата обращения 18.11.2019).
112. gensim: topic modelling for humans [Электронный ресурс]. 2019. URL: https://radimrehurek.com/gensim/ . (дата обращения 18.11.2019).
113. Keras: The Python Deep Learning library [Электронный ресурс]. 2019. URL: https://keras.io/ . (дата обращения 18.11.2019).
ПРИЛОЖЕНИЕ А
Разбиение команд процессора на классы
Таблица A.l - Классы команд процессора
Номер группы Название группы команд Команды
0 Data Transfer Instructions BSWAP, CBW, CDQ, CDQE, CMOVA, CMOVAE, CMOVB, CMOVBE, CMOVC, CMOVE, CMOVG, CMOVGE, CMOVL, COMVLE, CMOVNA, CMOVNAE, CMOVNB, CMOVNBE, CMOVNC, CMOVNE, CMOVNG, CMOVNGE, CMOVNL, CMOVNLE, CMOVNO, CMOVNP, CMOVNS, CMOVNZ, CMOVO, CMOVP, CMOVPE, CMOVPO, CMOVS, CMOVZ, CMPXCHG, CMPXCHG8B, CQO, CQO, CWD, CWDE, MOV, MOVABS, MOVABS, MOVSX, MOVZX, POP, POPA, POPAD, PUSH, PUSHA, PUSHAD, XADD, XCHG, XCHG, MOVSXD, CMOVLE
1 Binary Arithmetic Instructions ADC, ADD, CMP, DEC, DIV, IDIV, IMUL, INC, MUL, NEG, SBB, SUB
2 Decimal Arithmetic Instructions AAA, AAD, AAM, AAS, DAA, DAS
3 Logical Instructions AND, NOT, OR, XOR
4 Shift and Rotate Instructions RCL, RCR, ROL, ROR, SAL, SAR, SHL, SHLD, SHR, SHRD
5 Bit and Byte Instructions BSF, BSR, BT, BTC, BTR, BTS, SETA, SETAE, SETB, SETBE, SETC, SETE, SETG, SETGE, SETL, SETLE, SETNA, SETNAE, SETNB, SETNBE, SETNC, SETNE, SETNG, SETNGE, SETNL, SETNLE, SETNO, SETNP, SETNS, SETNZ, SETO, SETP, SETPE, SETPO, SETS, SETZ, TEST
6 Uncoditional Transfer Control Instructions CALL, INT, RET, RETN, IRET, JMP
7 Conditional Transfer Control Instructions JA, JB, JAE, JBE, JC, JCXZ, JE, JECXZ, JECXZ, JGE, JL, JLE, JNAE, JNB, JNBE, JNC, JNE, JNG, JNGE, JNL, JNLE, JNO, JNP, JNS, JNZ, JO, JP, JPE, JPO, JS, JZ, JG, LOOP, LOOPE, LOOPNE, LOOPNZ, LOOPZ
8 Other Transfer Control Instructions BOUND, ENTER, LEAVE
9 String Instructions CMPS, CMPSB, CMPSD, CMPSW, LODS, LODSB, LODSD, LODSW, MOVS, MOVSB, MOVSD, MOVSW, REP, REPNE, REPNZ, REPE, REPZ, SCAS, SCASB, SCASD, SCASW, STOS, STOSB, STOSD, STOSW
10 I/O Instructions IN, INS, INSB, INSD, INSW, OUT, OUTS, OUTSB, OUTSD, OUTSW
11 Flag Control (EFLAG) Instructions CLC, CLD, CLI, CMC, LAHF, POPF, POPFL, PUSHF, PUSHFL, SAHF, STC, STD, STI, PUSHFQ, POPFQ
12 Segment Register Instructions LDS, LES, LFS, LGS, LSS
Продолжение таблицы А.1
Номер группы Название группы команд Команды
13 Miscellaneous Instructions CPUID, LEA, NOP, UD2, XLAT, XLATB
14 Data Transfer Instructions (Floating Point) FBLD, FBSTP, FCMOVB, FCMOVBE, FCMOVE, FCMOVNB, FCMOVNBE, FCMOVNE, FCMOVNU, FCMOVU, FILD, FIST, FISTP, FLD, FST, FSTP, FXCH
15 Basic Arithmetic Instructions (FloatingPoint) FABS, FADD, FADDP, FCHS, FDIV, FDIVP, FDIVR, FDIVRP, FIADD, FIDIV, FIDIVR, FIMUL, FISUB, FISUBR, FMUL, FMULP, FPREM, FPREM1, FRNDINT, FSCALE, FSQRT, FSUB, FSUBP, FSUBR, FSUBRP, FXTRACT
16 Comparison Instructions (Floating-Point) FCOM, FCOMI, FCOMIP, FCOMP, FCOMPP, FICOM, FICOMP, FTST, FUCOM, FUCOMI, FUCOMIP, FUCOMP, FUCOMPP, FXAM
17 Transcendental Instructions (FloatingPoint) F2XM1, FCOS, FPATAN, FPTAN, FSIN, FSINCOS, FYL2X, FYL2XP1
18 Load Constants (Floating-Point) Instructions FLD1, FLDL2E, FLDL2T, FLDLG2, FLDLN2, FLDPI, FLDZ
19 Control Instructions (Floating-Point) FCLEX, FDECSTP, FFREE, FINCSTP, FINIT, FLDCW, FLDENV, FNCLEX, FNINIT, FNOP, FNSAVE, FNSTCW, FNSTENV, FNSTSW, FRSTOR, FSTCW, FSTENV, FSTSW, FWAIT, WAIT
20 SIMD State Management Instructions FXRSTOR, FXSAVE
21 Data Transfer Instructions (MMX) MOVD, MOVQ
22 Conversion Instructions (MMX) PACKSSDW, PACKSSWB, PACKUSWB, PUNPCKHBW, PUNPCKHDQ, PUNPCKHWD, PUNPCKLBW, PUNPCKLDQ, PUNPCKLWD
23 Packed Arithmetic Instructions (MMX) PADDB, PADDD, PADDSB, PADDSW, PADDUSB, PADDUSW, PADDW, PMADDWD, PMULHW, PMULLW, PSUBB, PSUBD, PSUBSB, PSUBSW, PSUBUSB, PSUBUSW, PSUBW
24 Comparison Instructions (MMX) PCMPEQB, PCMPEQD, PCMPEQW, PCMPGTB, PCMPGTD, PCMPGTW
25 Logical Instructions (MMX) PAND, PANDN, POR, PXOR
26 Shift and Rotate Instructions (MMX) PSLLD, PSLLQ, PSLLW, PSRAD, PSRAW, PSRLD, PSRLQ, PSRLW
27 State Management Instructions (MMX) EMMS
28 Data Transfer Instructions (SSE) MOVAPS, MOVHLPS, MOVHPS, MOVLHPS, MOVLPS, MOVMSKPS, MOVUPS, MOVSS
Продолжение таблицы А.1
Номер группы Название группы команд Команды
29 Packed Arithmetic Instructions (SSE) ADDPS, ADDSS, DIVPS, DIVSS, MAXPS, MAXSS, MINPS, MINSS, MULPS, MULSS, RCPPS, RCPSS, RSQRTPS, RSQRTSS, SQRTPS, SQRTSS, SUBPS, SUBSS
30 Comparison Instructions (SSE) CMPPS, CMPSS, COMISS, UCOMISS, CMPLTSS, CMPNLESS
31 Logical Instructions (SSE) ANDNPS, ANDPS, ORPS, XORPS
32 Shuffle and Unpack Instructions (SSE) SHUFPS, UNPCKHPS, UNPCKLPS
33 Conversion Instructions (SSE) CVTPI2PS, CVTPS2PI, CVTSI2SS, CVTSS2SI, CVTTPS2PI, CVTTSS2SI
34 MXCSR State Management Instructions (SSE) LDMXCSR STMXCSR
35 64-Bit SIMD Integer Instructions (SSE) PAVGB, PAVGW, PEXTRW, PINSRW, PMAXSW, PMAXUB, PMINSW, PMINUB, PMOVMSKB, PMULHUW, PSADBW, PSHUFW
36 Miscellaneous Instructions (SSE) MASKMOVQ, MOVNTPS, MOVNTQ, PREFETCHNTA, PREFETCHT0, PREFETCHT1, PREFETCHT2, SFENCE
37 SSE2 Data Movement Instructions MOVAPD, MOVHPD, MOVLPD, MOVMSKPD, MOVUPD
38 SSE2 Packed Arithmetic Instructions ADDPD, ADDSD, DIVPD, DIVSD, MAXPD, MAXSD, MINPD, MINSD, MULPD, MULSD, SQRTPD, SQRTSD, SUBPD, SUBSD
39 SSE2 Logical Instructions ANDNPD, ANDPD, ORPD, XORPD
40 SSE2 Compare Instructions CMPPD, CMPSD, COMISD, UCOMISD, CMPLTSD, CMPNLESD, CMPLESD
41 SSE2 Shuffle and Unpack Instructions SHUFPD, UNPCKHPD, UNPCKLPD
42 SSE2 Conversion Instructions CVTDQ2PD, CVTPD2DQ, CVTPD2PI, CVTPD2PS, CVTPI2PD, CVTPS2PD, CVTSD2SI, CVTSD2SS, CVTSI2SD, CVTSS2SD, CVTTPD2DQ, CVTTPD2PI, CVTTSD2SI
43 SSE2 Packed Single-Precision Floating-Point Instructions CVTDQ2PS, CVTPS2DQ, CVTTPS2DQ
44 SSE2 128-Bit SIMD Integer Instructions MOVDQ2Q, MOVDQA, MOVDQU, MOVQ2DQ, PADDQ, PMULUDQ, PSHUFD, PSHUFHW, PSHUFLW, PSLLDQ, PSRLDQ, PSUBQ, PUNPCKHQDQ, PUNPCKLQDQ
45 SSE2 Miscellaneous Instructions CLFLUSH, LFENCE, MASKMOVDQU, MFENCE, MOVNTDQ, MOVNTI, MOVNTPD, PAUSE
46 Operating System Support Instructions ARPL, CLTS, HLT, INVD, INVLPG, LAR, LGDT, LIDT, LLDT, LMSW, LOCK, LSL, LTR RDMSR, RDPMC, RDTSC, RSM, SGDT, SIDT, SLDT, SMSW, STR SYSENTER SYSEXIT, VERR VERW, WBINVD, WRMSR
ПРИЛОЖЕНИЕ Б
Свидетельство о регистрации программы для ЭВМ
ПРИЛОЖЕНИЕ В
Акт об использовании результатов диссертации в акционерном обществе «Самара-Информспутник»
об использовании результатов диссертации А. С. Юмаганова «Поиск похожих символьных последовательностей и графов на основе методов машинного обучения» в акционерном обществе «Самара-Информспутник»
Комиссия в составе начальника отдела эксплуатации вычислительных систем, к. т. н. В. Н. Копенкова и заместителя генерального директора, к.т.н. Н.И. Глумова, рассмотрев диссертацию А. С. Юмаганова, представляемую на соискание ученой степени кандидата технических наук по специальности 05.13.17 - Теоретические основы информатики, подтверждает, что разработанные в диссертационной работе методы, алгоритмы и программные модули были использованы при выполнении хоздоговорной работы № 17/2012 от 27.07.2012 и хоздоговорной работы № 5/2019 от 12.11.2019.
Применение указанных программных средств позволило повысить скорость и качество разрабатываемого программного обеспечения.
Начальник отдела эксплуатации , X В. Н. Коненков
вычислительных систем, к. т. н.
АКТ
Заместитель генерального директора, к.т.н.
ПРИЛОЖЕНИЕ Г
Акт об использовании результатов диссертации в федеральном государственном автономном образовательном учреждении высшего образования «Самарский национальный исследовательский университет имени академика С.П. Королева»
УТВЕРЖДАЮ
АКТ
об использовании результатов диссертации А.С Юмаганова «Поиск похожих символьных последовательностей и графов на основе методов машинного обучения» в федеральном государственном автономном образовательном учреждении высшего образования «Самарский национальный исследовательский университет имени академика С.П. Королева»
Комиссия в составе заведующего кафедры геоинформатики и информационной безопасности (ГИиИБ), д.т.н. В. В. Сергеева и главного научного сотрудника научно-образовательного центра компьютерных исследований (НОЦ КИ-208), д.т.н. В. А. Фурсова, рассмотрев диссертацию А. С. Юмаганова, представляемую на соискание ученой степени кандидата технических наук по специальности 05.13.17 - Теоретические основы информатики, подтверждает, что разработанные в диссертационной работе методы, алгоритмы и программные модули были использованы при выполнении договора № 152/17 от 01.11.2017.
Заведующий кафедры ГИиИБ, д.т.н.
Главный научный сотрудник НОЦ КИ-208, д.т.н.
В В. Сергеев В.А. Фурсов
Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.