Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Топ:
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
2017-05-23 | 487 |
5.00
из
|
Заказать работу |
|
|
Данный метод является основным методом противодействия дизассемблированию
программы, трудно представить себе защиту от дизассемблирования, не использующую этот метод. Метод основан на том, что код программы, за исключением небольшой части — распаковщика, хранится в исполняемом файле в искаженном виде, а преобразуется к нормальному виду лишь в оперативной памяти, в ходе выполнения программы. При попытке дизассемблировать программу с динамически изменяемым кодом дизассемблер правильно дизассемблирует только распаковщик (если в отношении распаковщика
не применены другие методы защиты от анализа), а большую часть кода программы интерпретирует как данные. Суть преобразования кода может быть различной. В простейшем случае используются стандартные программы-упаковщики наподобие
UPX, которые, помимо защиты от дизассемблирования, дают еще один приятный побочный эффект — исполняемый файл программы занимает в 1,5—4 раза меньше, чем до упаковки, впрочем, это преимущество в значительной степени компенсируется увеличивающимся временем загрузки упакованного программного модуля. В более
сложных защитах динамическое архивирование кода дополняется шифрованием. Ключ шифрования может быть жестко фиксированным либо поступать из какого-то внешнего источника. Например, если программа защищена от копирования с помощью внешнего
аппаратного устройства, поставляемого вместе с программой и подключаемого к одному из портов компьютера перед запуском программы, ключ, необходимый для распаковки кода программы, может считываться с этого устройства. Если распаковка кода выполняется только один раз при запуске программы, аналитик все-таки может дизассемблировать программу взяв в качестве входных данных содержимое оперативной памяти в тот момент, когда программа полностью распакована. Для повышения эффективности защиты кода от анализа преобразование кода выполняют по частям. В распакованном состоянии находятся лишь те фрагменты кода программы, которые выполняются в данный момент либо будут выполняться в ближайшем будущем, а все фрагменты кода, выполнение которых в ближайшее время не планируется, снова преобразуются в упакованный вид либо вообще вытесняются из памяти. Если в программе реализована данная схема, дизассемблирование оперативной памяти, занимаемой программой, не приводит к успеху ни в какой момент времени. Динамическое изменение кода программы, выполняемое не одномоментно, а регулярно, фактически делает программу оверлейной — и каждый момент времени большая часть кода программы недоступна для отладочных средств. Поэтому данный способ динамического
|
изменения кода позволяет обеспечить защиту не только от статического, но и от динамического метода анализа кода. Особенно мощная защита обеспечивается в том случае, если в программе поддерживается несколько различных алгоритмов модификации кода, и при каждой упаковке фрагмента кода алгоритм упаковки выбирается случайным образом (при распаковке кода выбор алгоритма однозначен).
Также повышает эффективность защиты от анализа случайный выбор адресов оперативной памяти, по которым размещаются распакованные фрагменты кода.
Пожалуй, наиболее мощной модификацией данного метода является применение полиморфных преобразований кода, когда преобразование модифицируемого кода не является взаимно однозначным, т. е. после упаковки и последующей распаковки кода получается код, не идентичный оригиналу, но выполняющий те же самые действия.
Перечислим некоторые наиболее простые полиморфные преобразования:
• «засеивание» кода «пустышками» — командами или наборами
|
команд, не выполняющими никаких действий, например:
nор
или
xchg eax, ebx
xchg ebx, eax
или
pushf
add eax, ebx
pub eax, ebx
popf
• вставка в код команд условных переходов на случайные адреса по
тождественно ложным условиям:
pushf
хоr еах, еах
jnz RandomAddress
popf
• замена команд синонимами, например замена
mov еах, ebx
на
pushf
push ebx
sub ebx, eax
add eax, ebx
pop ebx
popf
• замена регистров и (или) локальных переменных, используемых
командами, например замена
mov еах, [ebp - 4]
mov ebx,[еах + 4]
mov [ebp-8], ebx
на
mov ebx, [ebp - 8]
mov eax, [ebx + 4]
mov [ebp-4], eax
Существуют и другие, более сложные полиморфные преобразования, но они применяются очень редко, поскольку аккуратная и безошибочная реализация даже простейших полиморфных преобразований, перечисленных выше, является серьезным испытанием для программиста. Даже самая мелкая и незначительная ошибка в алгоритме преобразования кода рано или поздно приводит к краху защищаемой программы, причем локализовать место ошибки, как правило, весьма сложно.
|
|
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!