Новые подходы к запутыванию объектно

advertisement
УДК 004.056:378(06) Проблемы информационной безопасности в системе высшей школы
О.И. РЫСЬКОВ
Научный руководитель – А.А. МАТРОСОВ, аспирант
Московский инженерно-физический институт (государственный университет)
НОВЫЕ ПОДХОДЫ К ЗАПУТЫВАНИЮ
ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОДА
Целью данной работы является создание нового подхода к запутыванию объектного кода высокоуровневых языков программирования. В данной работе предлагается новый подход для запутывания объектно-ориентированного кода –
структурные преобразования, производимые над экземплярами классов и иерархией объектов, представленные в промежуточной форме. Такой подход позволяет
создать единый движок запутывания данных для всех языков объектноориентированного программирования.
На сегодняшний день огромную популярность получили объектноориентированные языки программирования, которые обеспечивают независимость кода от аппаратного и программного обеспечения путем компиляции в промежуточный код. Недостатком промежуточного кода является невозможность применить методов защиты, применяемые к обычному native-коду, а также его уязвимость к декомпиляции. Для того, чтобы
противостоять проблеме декомпиляции необходимо применять специальные инструментальные средства – обфускаторы, которые проводят запутывающие преобразования над различными объектами программы.
В работе [1] производится классификация таких запутывающих преобразований по видам объектов, к которым эти преобразования применяются:
 Лексические преобразования
 Преобразования над данными
 Преобразования над графом потока управления
Лексические преобразования включают в себя замену имен идентификаторов (имен переменных, массивов, структур, хешей, функций, процедур и т.д.), на произвольные длинные наборы символов, которые трудно
воспринимать человеку, используя специальную технику перегрузки таких идентификаторов.
К преобразованиям данных относится изменение интерпретации данных определенного типа; изменение срока использования хранилищ данных, например переход от локального их использования к глобальному и
наоборот; разделение переменных; реструктурирование массивов; изменение структуры классов и иерархий наследования классов, осуществляеISBN 978-5-7262-0886-2. XV Всероссийская научная конференция
153
УДК 004.056:378(06) Проблемы информационной безопасности в системе высшей школы
мая путем усложнения иерархии наследования при помощи создания дополнительных классов или использования ложного разделения классов.
К преобразованиям графа потока управления добавления недостижимого кода; устранение библиотечных вызовов; добавление избыточных
операций (мертвого кода) в те участки программного кода, которые
наиболее трудные для изучения и т.п.
Большинство коммерческих обфускаторов не учитывают объектную
направленность промежуточного кода и проводят лишь более или менее эффективные лексические преобразования, преобразования графа потока
управления; но в тоже время преобразования над данными представлены
лишь шифрованием строк. При этом хочется заметить, что главными данными в объектно-ориентированной среде являются объекты и именно они
должны являться приоритетным направлением запутывающих преобразований.
При разработке концептуально обобщенной методологии запутывающих преобразований на уровне объектно-ориентированной парадигмы
разработки программного обеспечения, можно говорить о введении
обобщенных запутывающих концепций для объектной модели в целом.
Такой уровень абстракции запутывающих преобразований позволит нам
абстрагировать генерацию запутанных алгоритмов от какого-либо конкретного языка. Дальше при совершенствовании этих концепций, можно
говорить о построении кросс-языкового обфускатора, который будет работать с любой программой, которая использует объектно-ориентированную модель, стандартизированную в рамках обфускатора.
В данной работе предпринята попытка создания общих для всех языков объектно-ориентированного программирования методов запутывания
кода. При этом все программы, написанные на различных объектноориентированных языках программирования переводятся в общую универсальную объектную модель, и запутывающие преобразования производятся над этой моделью. При этом большое внимание уделяется эффективностью и разнообразию запутывающих преобразований, проводимых
над классами и иерархией классов.
Задачами ближайшего времени являются интеграция с другим видом
запутывающих преобразований – преобразований над графом потока
управления и создание эффективной комплексной системы запутывающих преобразований.
ISBN 978-5-7262-0886-2. XV Всероссийская научная конференция
154
УДК 004.056:378(06) Проблемы информационной безопасности в системе высшей школы
Список литературы
1. Christian Collberg, Clark Thomborson, Douglas Low “A Taxonomy of Obfuscating Transformations”
http://www.cs.arizona.edu/~collberg/Research/Publications/CollbergThomborsonLow97a/index.ht
ml
2. Гради Буч “Объектно-ориентированный анализ и проектирование примерами приложений на С++”, второе издание
http://vmk.ugatu.ac.ru/book/buch/index.htm
3. Tim Lindholm, Frank Yellin "The Java Virtual Machine Specification, Second Edition"
http://java.sun.com/docs/books/jvms/
4. Standard ECMA-335 Common Language Infrastructure (CLI) 4th edition (June 2006)
http://www.ecma-international.org/publications/standards/Ecma-335.htm
5. Gregory Wroblewski "General method of program code obfuscation" Wroclaw 2002
http://citeseer.ist.psu.edu/541708.html
6. Чернов А.В. "Анализ запутывающих преобразований программ" Труды института системного программирования http://www.citforum.ru/security/articles/analysis/
ISBN 978-5-7262-0886-2. XV Всероссийская научная конференция
155
Download