Информационная безопасность


Анализ запутанных программ - часть 2


Преобразование Сложность распутывания (необходимый тип анализа) Автоматизируемость (тип распутывателя)
Удаление комментариев Одностороннее преобразование hh
Переформатирование программы Синтаксический автомат.
Удаление отладочной информации Одностороннее преобразование hh
Изменение имён идентификаторов Синтаксический полуавтомат.
Языково-специфические преобразования Синтаксический автомат.
Открытая вставка функций Одностороннее преобразование поддерж.
Вынос группы операторов Синтаксический автомат.
Непрозрачные предикаты и выражения Синтаксический - статистический (зависит от вида предиката) автомат. - поддерж.
Внесение недостижимого кода Зависит от стойкости непрозрачных предикатов автомат., полуавтомат.
Внесение мёртвого кода Синтаксический - статистический автомат., полуавтомат.
Внесение избыточного кода Синтаксический - статистический автомат., поддерж.
Внесение несводимости в граф Статический, но зависит от стойкости непрозрачных предикатов автомат., полуавтомат.
Устранение библиотечных вызовов Одностороннее преобразование поддерж.
Переплетение функций Статический - статистический автомат. - поддерж.
Клонирование функций или базовых блоков Статический автомат. - поддерж.
Развёртка циклов Одностороннее преобразование поддерж.
Разложение циклов Статический автомат. - поддерж.
Введение диспетчера Статический - статистический автомат., полуавтомат.
Локализация переменных в базовом блоке Статический - статистическийе автомат., полуавтомат.
Расширение области действия переменных Статический - статистический автомат., полуавтомат.

Таблица 2. Классификация запутывающих преобразований

В таблице 2 приведена классификация методов запутывания по отношению к требуемым методам анализа программ. В третьем столбце таблицы указана степень, в которой возможно автоматическое распутывание. Степень автоматизма оценивается по следующей шкале: автоматический - поиск в программе запутанных фрагментов и их распутывание возможны полностью автоматически; полуавтоматический - поиск в программе подозрительных фрагментов и их распутывание по отдельности выполняются автоматически, но пользователь должен подтвердить применение распутывающего преобразования; поддерживаемый - поиск в программе запутанных фрагментов и применение распутывающих преобразований требуют существенного участия человека, но процесс может быть поддержан специальными инструментальными средствами; неавтоматизируемый - автоматизация выполнения распутывающего преобразования принципиально затруднена.

Для некоторых видов запутывающих преобразований требуемые инструменты (синтаксические, статические, статистические) зависят от того, каким способом было реализовано преобразование. Например, непрозрачные предикаты могут быть самого разного вида, от простейших if(0), до очень сложных. Для анализа и устранения простейших непрозрачных предикатов достаточно инструментов уровня синтаксического анализа, которые работают автоматически, а для устранения сложных непрозрачных предикатов требуется статистический анализ, либо сложные инструменты, такие как полуавтоматический доказатель теорем. Поэтому некоторые ячейки таблицы содержат несколько необходимых видов анализа или несколько оценок автоматизируемости.




- Начало -  - Назад -  - Вперед -



Книжный магазин