Сборник материалов деловой программы «Интерполитех –2015» - page 130

129
Повышение криптостойкости конечного приложения на основе
применения принципов динамического полиморфизма
Самомодифицирующийся код – ме-
тодика правки образа приложения в
памяти из управляемого им потока ди-
намическим путём («на лету», по ходу
исполнения файла). Самомодификация
применяется для достижения устойчи-
вости к реверс-инжинирингу, и уско-
рения выполнения некоторых участков
кода (к примеру, правки адреса и типа
перехода «на лету»), или отключения
части функционала на время отладки.
Для того, чтобы защита имела
смысл, программный код, ни в одном
участке, не должен быть полностью рас-
шифрован, иначе именно этот участок
будет использован для снятия дампа.
При использовании полиморфно
сгенерированных «на лету» процедур
шифрования (динамически, нелиней-
ным алгоритмом), автоматизировать
дешифровку программы крайне за-
труднительно, однако, и создать такой
механизм защиты сложно, что является
одним из факторов, затрудняющих рас-
пространение полиморфных защитных
механизмов (полиморфных крипторов).
В случае с процессорами, постро-
енными на архитектуре x86, не поддер-
живающими когерентность машинного
кода (связи, отслеживания конвейера),
где отсутствовала технология отсле-
живания команд, находящихся на кон-
вейере, было невозможно отладчику, в
трассирующем режиме (эмулирующем
работу процессора, отслеживая выпол-
нение кода), обнаружить правку команд
в реальном времени, при этом, разуме-
ется, усложняя процесс разработки.
Если модификация команд отсле-
живается, как это выполняется на про-
цессорах семейства, начиная с Pentium,
такие действия, как IF, OR выполняются
конвейерно, программная длина равна
нулю, что приводит к вызову исклю-
чения по выполнению на отладчике в
старых защитных механизмах, не учи-
тывающих данную задокументирован-
ную особенность поведения конвейера
процессора.
Прямая запись в кэш процессора
невозможна (существуют разнообраз-
ные методы выборки информации для
попадания из конвейера в кэш, распро-
странён FIFO с критерием частотности).
В момент изменения инструкции, пра-
вится кэш данных, затем кодовый кэш
экстренно сбрасывается и кэш-линейки
загружаются с новыми значениями. Это
Аветисян Карен Рафаэлович
Адъюнкт кафедры информационной
безопасности учебно-научного
комплекса информационных
технологий Московского университета
МВД России имени В.Я. Кикотя
старший лейтенант полиции
1...,120,121,122,123,124,125,126,127,128,129 131,132,133,134,135,136,137,138,139,140,...241
Powered by FlippingBook