Метод захисту програмного коду від аналізу засобами обфускації

DOI: 10.31673/2412-4338.2020.045051

  • Бондарчук А. П. (Bondarchuk A. P.) Державний університет телекомунікацій, м. Київ
  • Корнага Я. І. (Kornaga Ya. I.) Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського», м. Київ
  • Базалій М. Ю. (Bazaliy M. Yu.) Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського», м. Київ
  • Сергієнко П. А. (Serhiyenko P. A.) Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського», м. Київ
  • Ільїн О. Ю. (Ilin O. Yu.) Державний університет телекомунікацій, м. Київ

Анотація

Розглянутий метод захисту програмного коду з використанням механізмів обфускації дозволяє проводити заплутування коду при розробці та при проходженні рефакторингу. Даний метод захищає від методів декомпіляції, які можуть застосовуватися як в мануальному режимі так і автоматично. Метою дослідження є розробка методу обфускації програмного коду для забезпечення захищеності від декомпіляції. Для досягнення поставленої мети вирішено такі завдання: проаналізовані алгоритми деобфускації в різних практичних методах; запропоновано новий метод обфускації програмного коду; представлено обфускований коду та визначено його властивості. Сформульовано основні етапи пропонованого підходу до обфускаціі програм: лексичний розбір; деструктурування коду; обфускація коду, обфускація змінних, обфускація констант. Визначено різні стратегії при синтезі обфускованних ідентифікаторів: генерація імен, що складаються з допустимих випадкових (псевдовипадкових) символів, довжиною із заданого інтервалу (фіксованою довжиною); генерація імен, що складаються з певної кількості повторюваних допустимих символів, в умовах, коли множину символів задано і заданий інтервал довжин ідентифікаторів; змішана стратегія з рівноймовірнісним вибором стратегій 1 і 2.
Сформульовано дві оптимізаційні задачі: завдання мінімізації кількості операцій при породженні заданого набору констант при фіксованій множині безпосередньо визначених констант; завдання мінімізації кількості безпосередньо визначених констант серед варіантів з мінімальною складністю формул. Запропонований підхід може бути використаний в програмах, які мають певну кількість підпрограм з однаковим інтерфейсом. При цьому, незалежно від складності реалізації, код кожної підпрограми може бути перетворений в деструктурований код. Після цього можливо обчислити сумарну кількість виконаних операторів з урахуванням (оператора) виходу для всіх підпрограм.

Ключові слова: обфускація, захист програмного коду, рефакторинг.

Список використаної літератури
1. Бородин А.В., Долгушев Е.Д. Обфускация пула констант как задача построения минимальной системы целочисленных линейных комбинаций. Образование, наука, бизнес: развитие и перспективы: материалы III международной научно-практической конференции. 2016. С. 7 – 13.
2. Бородин А.В., Долгушев Е.Д. Постановка задачи обфускации пула констант. Новое слово в науке: перспективы развития: материалы IX Международной научно–практической конференции. 2016. № 3 (9). С. 89 – 93.
3. Варновский Н.П., Захаров В.А., Кузюрин Н.Н. Математические проблемы обфускации. Труды конференции "Математика и безопасность информационных технологий". 2014. С. 54 – 72.
4. Варновский Н.П., Захаров В.А., Подловченко Р.И., Щербина В.С., Кузюрин Н.Н., Шокуров А.В. О применении методов деобфускации программ для обнаружения сложных компьютерных вирусов. Известия ЮФУ. Технические науки. 2006. №7(62). С. 18 – 27.
5. Варновский Н.П., Захаров В.А., Кузюрин Н.Н., Шокуров А.В. Современное состояние исследований в области обфускации программ: определения стойкости обфускации. Труды Института системного программирования РАН. 2014. Т. 26. В. 3. С. 167 – 198.
6. Коробейников А.Г., Кутузов И.М. Алгоритм обфускации. Кибернетика и программирование. 2015. №3. С. 1 – 8.
7. Коробейников А.Г. , Кутузов И.М., Колесников П.Ю. Анализ методов обфускации. Кибернетика и программирование. 2017. №1. С. 31 – 37.
8. Лифшиц Ю.М. Запутывание (обфускация) программ. Санкт-Петербургское отделение математического института им. В. А. Стеклова РАН., 2018.
9. Barak B., Goldreich O., Impagliazzo R., Rudich S., Sahai A., Vadhan S., Yang K. On the (im)possibility of obfuscating programs. Journal of the ACM. 2018. № 6.P. 40 – 48 p.
10. Drape S. , Voiculescu I. Creating transformations for matrix obfuscation. Static Analysis: 16th International Static Symposium. 2019. P. 273 – 292.
11. Drape S. , Voiculescu I. The Use of Matrices in Obfuscation. Oxford University Computing Laboratory. 2018. № 08. P. 12 – 28.

Номер
Розділ
Статті