Архив статей журнала

СПОСОБ КОЛИЧЕСТВЕННОГО СРАВНЕНИЯ ОБФУСЦИРУЮЩИХ ПРЕОБРАЗОВАНИЙ (2024)
Выпуск: Т. 23 № 3 (2024)
Авторы: Косолапов Юрий Владимирович, Борисов Петр Дмитриевич

В работе рассматривается задача количественного сравнения эффективности и стойкости практически применяемых обфусцирующих преобразований программного кода. Предлагается способ нахождения эффективности и стойкости преобразований путем вычисления «понятности» соответственно обфусцированной и деобфусцированной версий программы. В качестве меры понятности программы предлагается использовать похожесть этой программы на аппроксимацию ее «самой понятной» версии. На основе предложенного способа построена модель оценки эффективности и стойкости, основными элементами которой являются: набор исследуемых обфусцирующих преобразований, функция похожести, способ аппроксимации самой понятной версии программы и деобфускатор. Для реализации этой модели 1) выбраны обфусцирующие преобразования, предоставляемые обфускатором Hikari; 2) методами машинного обучения по статическим характеристикам программ из наборов CoreUtils, PolyBench и HashCat построено 8 функций похожести; 3) в качестве аппроксимации самой понятной версии программы выбрана наименьшая по размеру версия программы, найденная среди версий, полученных с помощью опций оптимизации компиляторов GCC, Clang и AOCC; 4) построена и реализована схема деобфускации программ на основе оптимизирующего компилятора из состава LLVM. В работе экспериментально получены результаты оценки эффективности и стойкости для последовательностей преобразований длины один, два и три. Эти результаты показали согласованность с результатами независимых оценок эффективности и стойкости, полученных другими способами. В частности, получено, что наибольшую эффективность и стойкость демонстрируют последовательности преобразований, начинающиеся с преобразований графа потока управления, а наименьшей стойкостью и эффективностью - как правило, последовательности, не содержащие таких преобразований.

Сохранить в закладках