Институт системного программирования им. В.П. Иванникова РАН


О противодействии некоторым алгоритмам статического анализа программ.

Авторы

Захаров В.А., Иванов К.С.

Аннотация

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

В настоящей работе мы предлагаем один из возможных подходов к разработке и оценке способности обфускирующих преобразований противодействовать алгоритмам статического анализа программ. В основу этого подхода положена следующая идея. Предположим, что рассматривается алгоритм статического анализа программ $S$ применительно к классу программ $P$. В классе $P$ выделяется подкласс программ $P_0$, анализ которых при помощи алгоритма $S$ дает наименее точный результат. Программы из подкласса $P_0$ будем называть непрозрачным для алгоритма $S$. Тогда для эффективного противодействия алгоритму $S$ достаточно решить следующие три задачи: Убедиться в том, что для любой программы из класса $P$ существует эквивалентная ей непрозрачная программа. Построить систему эквивалентных преобразований программ, позволяющую преобразовать всякую программу из класса $P$ в эквивалентную непрозрачную программу. Разработать эффективную процедуру эквивалентного преобразования программ из класса $P$ в подкласс непрозрачных программ. Предложенный подход к повышению стойкости программ по отношению к средствам декомпиляции был опробован для двух типов алгоритмов статического анализа программ: алгоритмов оценки диапазонов переменных-указателей и алгоритмов построения сечения.

Издание

Труды конференции "Математика и безопасность информационных технологий" (МаБИТ-03) , Москва, 22-24 октября 2003 г, 2003, Московский Центр Непрерывного Математического Образования Москва, с. 282-287.

Научная группа

Теоретическая информатика

Все публикации за 2003 год Все публикации