Метод и средства защиты исполняемого программного кода от динамического и статического анализа
Download 482 Kb.
|
Аранов, Владислав Юрьевич
- Bu sahifa navigatsiya:
- Обфускация кода.
- Виртуализация процессора.
Компрессия/шифрование - это традиционный способ защиты информации от несанкционированного доступа. В нашем случае уязвимым местом является наличие механизма декомпрессии/дешифрации в самой защищаемой программе, что дает возможность опытному злоумышленнику выделить и задействовать его для раскрытия программного кода. Другой вариант: взломщик после * приобретения лицензионной ,копии программы* извлекает
8 расшифрованные части программы в процессе ее работы из памяти. Кроме того, нужно учитывать, что чем выше криптостойкость шифра, тем длительнее дешифрация, и замедление программы может стать неприемлемым. Обфускация кода. Существует множество способов запутать программный код. К сожалению, большинство из них применимо только к исходному коду программы на языке высокого уровня (C/C++, Java, Python и т.д.), а не к машинному (исполняемому) коду. (Обзоры этих методов можно найти в [3 - 5].) Разнообразие способов запутывания машинного кода гораздо меньше хотя бы потому, что в нем меньше разнообразие сущностей (имен, структур управления и т.д.), чем в исходном коде. Для нас же важна защита именно исполняемого кода. Простейший способ обфускации машинного кода — вставка в него мусорных, недействующих конструкций (таких как or ах, ах). При этом простая вставка таких инструкций не сильно усложняет процесс анализа кода т.к. существует много программных средств дизассемблирования кода, которые анализируют код и упрощают его, в том числе и убирая недействующие конструкции. Таким образом, этот метод эффективен, если данные инструкции не просто недействующие, а недействующие в данном исходном коде, например, это могут быть реальные инструкции, но оперирующие регистрами, не используемыми в данном коде. Виртуализация процессора. Этот метод состоит в построении псевдокода, работающего на виртуальной машине, и, на сегодняшний момент он является наиболее актуальным и эффективным. Суть технологии состоит в том, что исполняемые файлы дизассемблируются, анализируются и преобразуются в защищенный код некоторой уникальной защищенной виртуальной машины. Сама виртуальная машина генерируется тут же. Анализировать алгоритм работы защищенного подобным образом кода существенно сложнее, чем стандартные инструкции Intel совместимых процессоров, поскольку для него не существует никакого стандартного инструментария (отладчиков, дизассемблеров). К тому же, защищенный код не содержит в явном виде методов восстановления оригинального кода [6]. Поэтому злоумышленнику приходится все делать вручную, самому, что занимает несравнимо больше времени, чем использование готовых инструментов. Задача реинжиниринга сводится к изучению архитектуры симулятора, симулируемого им процессора, созданию дизассемблера для последнего, и, наконец, анализу дизассемблированного кода. Ведь злоумышленник не имеет доступа ни к описанию архитектуры виртуального процессора, ни к информации по организации используемого симулятора. К сожалению, применение данного метода затруднено ввиду высокой сложности и, соответственно, стоимости его реализации. Другой недостаток - существенное замедление .исполняемой программы (на один-два порядка величины). Несмотря на эти недостатки, 9 передовые производители защитного ПО все же реализуют его в новейших продуктах: StarForce3, NeoGuard, VMProtect и др. Download 482 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling