bannerbannerbanner
Низкоуровневый анализ машинного кода. Для студентов технических специальностей
Низкоуровневый анализ машинного кода. Для студентов технических специальностей

Полная версия

Низкоуровневый анализ машинного кода. Для студентов технических специальностей

текст

0

0
Язык: Русский
Год издания: 2020
Добавлена:
Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
1 из 2

Низкоуровневый анализ машинного кода

Для студентов технических специальностей


Иван Андреевич Трещев

Анастасия Сергеевна Ватолина

Владислав Александрович Сериков

За каждым успешным кодером стоит еще более успешный декодер, который понимает этот код.

Аноним

© Иван Андреевич Трещев, 2020

© Анастасия Сергеевна Ватолина, 2020

© Владислав Александрович Сериков, 2020


ISBN 978-5-0051-9307-0

Создано в интеллектуальной издательской системе Ridero

Введение

Зачастую проектируя программное обеспечение мы задумываемся над созданием и его системы защиты. Существует довольно большое количество способов обфускации программного кода, технологий встраивания антиотладочной информации, полиморфного изменения программного кода и другие разнообразные механизмы.

К сожалению использование всех хитроумных технологий зачастую, при грамотном использовании отладчиков и дизассемблеров, не приводит к желаемому разработчиком результату – защите программного обеспечения от изучения. В данной работе сделана попытка не теоретического описания существующих методик и средств для выполнения низкоуровнего анализа машинного кода, а обобщения практической части курса читаемого автором для студентов.

У читателя предполагаются базовые знания в области программирования на assembler для 16,32,64 разрядных архитектур микропроцессоров и умение читать/разрабатывать код на C++/C#, python. Материалы книги доступны по постоянной ссылке https://yadi.sk/d/gWbKFT4lyIjZKg.

В силу специфики рассматриваемого предмета в данной книге и необходимых знаний, автор хотел бы предостеречь читателей имеющих слабую подготовку по рассматриваемым проблемам от использования материалов данной книги. Очень может быть, что многое просто не получится. В этом случае в качестве рекомендации следует ознакомится с литературой представленной в соответствующем разделе и затем вернуться к материалам книги.

В заключении приведена ссылка на Яндекс. Диск, где содержатся дополнительная информации доступная для изучения, а так же электронные варианты заданий.

ЛЕКЦИИ

1 Роспатент, основные функции, регистрация программ для эвм

1.1 Правовая основа в России

УК РФ Статья 273. Создание, использование и распространение вредоносных компьютерных программ (в ред. Федерального закона от 07.12.2011 N 420-ФЗ) (см. текст в предыдущей редакции)

1. Создание, распространение или использование компьютерных программ либо иной компьютерной информации, заведомо предназначенных для несанкционированного уничтожения, блокирования, модификации, копирования компьютерной информации или нейтрализации средств защиты компьютерной информации, – наказываются ограничением свободы на срок до четырех лет, либо принудительными работами на срок до четырех лет, либо лишением свободы на тот же срок со штрафом в размере до двухсот тысяч рублей или в размере заработной платы или иного дохода осужденного за период до восемнадцати месяцев.

2. Деяния, предусмотренные частью первой настоящей статьи, совершенные группой лиц по предварительному сговору или организованной группой либо лицом с использованием своего служебного положения, а равно причинившие крупный ущерб или совершенные из корыстной заинтересованности, – наказываются ограничением свободы на срок до четырех лет, либо принудительными работами на срок до пяти лет с лишением права занимать определенные должности или заниматься определенной деятельностью на срок до трех лет или без такового, либо лишением свободы на срок до пяти лет со штрафом в размере от ста тысяч до двухсот тысяч рублей или в размере заработной платы или иного дохода осужденного за период от двух до трех лет или без такового и с лишением права занимать определенные должности или заниматься определенной деятельностью на срок до трех лет или без такового.

3. Деяния, предусмотренные частями первой или второй настоящей статьи, если они повлекли тяжкие последствия или создали угрозу их наступления, – наказываются лишением свободы на срок до семи лет.

Статья 1299. Технические средства защиты авторских прав

1. Техническими средствами защиты авторских прав признаются любые технологии, технические устройства или их компоненты, контролирующие доступ к произведению, предотвращающие либо ограничивающие осуществление действий, которые не разрешены автором или иным правообладателем в отношении произведения.

2. В отношении произведений не допускается:

– Осуществление без разрешения автора или иного правообладателя действий, направленных на то, чтобы устранить ограничения использования произведения, установленные путём применения технических средств защиты авторских прав;

– Изготовление, распространение, сдача в прокат, предоставление во временное безвозмездное пользование, импорт, реклама любой технологии, любого технического устройства или их компонентов, использование таких технических средств в целях получения прибыли либо оказание соответствующих услуг, если в результате таких действий становится невозможным использование технических средств защиты авторских прав либо эти технические средства не смогут обеспечить надлежащую защиту указанных прав.

3. В случае нарушения положений, предусмотренных пунктом 2 настоящей статьи, автор или иной правообладатель вправе требовать по своему выбору от нарушителя возмещения убытков или выплаты компенсации в соответствии со статьей 1301 настоящего Кодекса, кроме случаев, когда настоящим Кодексом разрешено использование произведения без согласия автора или иного правообладателя.

За указанные нарушения предусмотрена гражданско-правовая (ст. 1301 ГК РФ) и административная (ст. 7.12 КоАП РФ) ответственность. Отмечается, что закон (часть четвёртая ГК РФ) обладает невысоким техническим уровнем и допускает неоднозначные трактовки. В частности, в том же Гражданском Кодексе (ч. IV, ст. 1280, п. 1) сказано:

Лицо, правомерно владеющее экземпляром программы для ЭВМ или экземпляром базы данных (пользователь), вправе без разрешения автора или иного правообладателя и без выплаты дополнительного вознаграждения:

– Внести в программу для ЭВМ или базу данных изменения исключительно в целях их функционирования на технических средствах пользователя и осуществлять действия, необходимые для функционирования таких программы или базы данных в соответствии с их назначением, в том числе запись и хранение в памяти ЭВМ (одной ЭВМ или одного пользователя сети), а также осуществить исправление явных ошибок, если иное не предусмотрено договором с правообладателем;

– Изготовить копию программы для ЭВМ или базы данных при условии, что эта копия предназначена только для архивных целей или для замены правомерно приобретенного экземпляра в случаях, когда такой экземпляр утерян, уничтожен или стал непригоден для использования. При этом копия программы для ЭВМ или базы данных не может быть использована в иных целях, чем цели, указанные в подпункте 1 настоящего пункта, и должна быть уничтожена, если владение экземпляром таких программы или базы данных перестало быть правомерным.

Таким образом, внесение изменений в технические средства защиты теоретически можно оправдать необходимостью создания резервной копии, поскольку всегда существует вероятность утраты лицензионного оригинала. И хотя это не станет оправданием непосредственного распространения взломанного варианта ПО, однако даёт возможность распространять ПО и просто полезную информацию, позволяющие такой взлом осуществить, под предлогом необходимости создания рабочей резервной копии.

2 Защита ПО

Прежде чем приступить к защите своего продукта разработчику в первую очередь необходимо определиться с его принципом лицензирования: необходимо выбрать, как за ваш продукт будут платить. Существует множество разновидностей, в целом их можно разделить на четыре типа:

– Одноразовый платеж. За ваше ПО платят раз, после чего могут пользоваться неограниченное время;

– Функциональные ограничения. Дополнительные возможности пользователь может открыть за дополнительную плату;

– Временная лицензия. Вы «сдаете приложение в аренду», то есть речь идет о подписке;

– Многоуровневая. Представляет собой комбинацию названных методов. Пользователь получает Silver-, Gold- или Platinum-версию ПО при соответствующей оплате.

После того как разработчик определился со стратегией лицензирования, наступает пора начать поиски программных технологий защиты. И здесь стоит помнить о таких нюансах, как возможность подключения ПО к интернету, его специализация, вид платформы, для которой предназначен софт, и прочее.

Еще раз подчеркнем важность выбора адекватной защиты. Если вы собираетесь защитить свой велосипед методом, который применяется в Форт-Ноксе, это вряд ли можно назвать разумным. Есть и обратная зависимость: если хотите защитить Форт-Нокс, не используйте для этого велосипедный замок, это бесполезно, взлом гарантирован. В целом, стратегия лицензирования должна соответствовать цене самого продукта.

2.1 Виды защиты


Как и говорилось выше, есть различные опции для защиты ПО от взлома и копирования. Они могут отличаться по стоимости, уровню защиты и специализации.

Защита по «доверию». Здесь вы рассчитываете на то, что пользователи будут платить без всяких проблем. Один пользователь – одна лицензия, вечная. В принципе, затрат с вашей стороны практически нет. Как только приложение скомпилировано, его можно начать распространять. Но проблема в том, что если ваш продукт станет популярным, то кто-то точно его взломает, начав раздавать. Защиты от взлома в таком случае нет, она нулевая.

– Офлайн-программная защита. Речь идет о защите без подключения к интернету. Обычно реализуется такая схема сразу после компиляции программы. Чаще всего используется программная оболочка с определенными настройками. Защищенная программа не подключается для проверки целостности ни к каким внешним серверам. В принципе, обойти такую защиту можно без всяких проблем.

– Онлайн-программная защита. Здесь уже речь идет о более серьезном методе – проверке лицензии при помощи сервера лицензирования. В этом случае требуются относительно высокие затраты в начале и периодические расходы позже. Как и в предыдущем варианте, используется программная оболочка, но параметры лицензирования проверяются и настраиваются в онлайне. При желании можно добавить опции проверки ПО, например есть лицензия или нет. Если требуется постоянное подключение к сети, то продукт, скорее всего, будет работать не всегда и не везде. Степень серьезности такой защиты – между средним и высоким уровнем.

– Аппаратная защита. Один из наиболее надежных методов, который сочетает в себе преимущества всех прочих стратегий. За лицензирование отвечает электронный USB-ключ, которому не требуется подключение к сети. Цена каждого ключа для разработчика низкая, нет периодических дополнительных трат. Реализовать можно как при помощи API, так и посредством программной оболочки. Достоинством такого метода является то, что лицензию можно убрать за пределы операционной системы, ключ хранится вне ПК. Ключ либо очень сложно, либо вообще невозможно скопировать. ПО, которое защищено при помощи аппаратного ключа, может использоваться на тех системах, где нет подключения к сети. Это, к примеру, правительственные объекты или промышленность. Еще один плюс в том, что электронному ключу не требуются различные решения для разных программных сред, а возможности лицензирования очень гибкие. Решения на основе аппаратного ключа можно развернуть буквально за минуты, они поддерживаются практически любыми версиями операционных систем. Правда, помните, что поставщик решения, в случае если вы не можете создать аппаратный ключ самостоятельно, должен делать все быстро, чтобы не возникла необходимость ожидать партии ключей и, соответственно, переноса старта продаж. Также поставщик должен предоставить простое и эффективное решение, которое быстро разворачивается.

2.2 Удобство пользователя


Однако стоит упомянуть и об удобстве для пользователя. Поскольку методы защиты разнятся по доступности для конечного пользователя то соответственно пользователь предпочтет долее удобный для себя вариант, в случае если у него есть выбор:

– Офлайн-программная защита. Этот вид является наиболее удобным и приемлемым пользователями поскольку, в отличии от остальных видов, он уверен, что после покупки ему н6е придется задумываться о регулярном подтверждении подлинности купленного им продукта, за редкими исключениями.

– Онлайн-программная защита. Этот вид является менее предпочтительным пользователями поскольку несет в себе неудобство постоянного или периодического, как это часто бывает «в неудобное время» для пользователя, подключения к интернету. Однако этот метод может быть незаметным для пользователя и соответственно не вызывать негативных эмоций, в том случает если ПО по своей сути требует постоянного взаимодействия с интернетом.

– Аппаратная защита. Этот тип является наиболее неудобным для пользователя поскольку при каждом запуске пользователю приходится физически при помощи ключа подтверждать подлинность ПО и все становится еще хуже при утере физического ключа.

Поскольку процесс встраивания защиты зачастую связан с некоторыми трудностями соответственно и о защите ПО стоит задуматься еще на стадии проектирования: после того как проект готов частично или полностью, изменить что-то будет непросто.

3 Геометрия диска

В рамках защиты интеллектуальной собственности стоит упомянуть и о геометрии диска, поскольку зачастую защита либо влияет либо зависима от нее.

Жесткие диски представляют собой несколько пластин с магнитным покрытием, расположенных на одной оси и вращающихся с большой скоростью. Считывание/запись информации осуществляется с помощью головок диска, расположенных одна под другой между пластинами и перемещающихся от центра к краям пластин. Окружность на магнитной пластине, которую описывает головка при вращении пластин, называется дорожкой, а совокупность таких дорожек, расположенных одна под другой (определяемая каждым фиксированным положением головок), называется цилиндром. Каждая дорожка разбита на сектора, и в сектор можно записать 512 байт полезной информации. Поэтому диски часто характеризуются совокупностью трех цифр:

– Числом цилиндров/

– Числом дорожек в цилиндре/

– Числом секторов на дорожке

C/H/S (от первых букв соответствующих английских терминов: Cylinder/Head/Sector, т. е. цилиндр/головка/сектор). Эти три цифры называют «геометрией диска». Диск с геометрией C/H/S имеет объем C*H*S*512 байт.

Диски являются блочными устройствами, т. е. считывание и запись информации производится блоками, и минимальный размер блока равен одному сектору (512 байт). Для того чтобы записать информацию на диск, надо «позиционировать головку», т. е. указать контроллеру, в какой сектор эту информацию записать. Сектора как раз адресуются путем указания номера цилиндра, номера считывающей головки (или дорожки) и порядкового номера сектора на дорожке.

4 Технические средства защиты от копирования

DRM или же технические средства защиты авторских прав – это программные или программно-аппаратные средства, которые намеренно ограничивают, либо затрудняют различные действия (копирование, модификация, просмотр) с данными в электронной форме или позволяют отследить эти действия

В большинстве современных DRM используются криптографическая защита, однако ее нельзя использовать в полной мере, поскольку для доступа к зашифрованной информации требуется секретный ключ. Однако в случае с DRM типична ситуация – когда ограничения обходятся законным владельцем копии, который должен иметь зашифрованную информацию и ключ к ней, для чтения информации, что аннулирует всю защиту. Поэтому системы DRM пытаются скрыть ключ шифрования от пользователя (в том числе с использованием аппаратного обеспечения), однако, поскольку используемые сегодня устройства воспроизведения являются достаточно универсальными и находятся под контролем пользователей, сделать это довольно трудно.

Одновременный доступ к воспроизведению и запрет на копирование – чрезвычайно сложная задача:

– воспроизведение – чтение информации ее обработка и запись на устройство вывода,

– копирование – чтение и запись информации на устройство хранения.

То есть, если возможно воспроизведение информации, то возможно и ее последующее копирование. Следовательно, эффективная техническая защита от копирования во время авторизованного воспроизведения может быть достигнута только тогда, когда устройство целиком находится под контролем правообладателя.

4.1 Звук и музыкальные произведения


Audio-CD

Первые методы защиты музыкальных компакт-дисков от копирования использовали нарушения стандарта записи Audio CD, которые не были заметны для большинства CD-проигрывателей, но не работали на более сложно устроенных компьютерных приводах CD-ROM. Компания Philips отказалась ставить на таких дисках знак Compact Disc Digital Audio, который доказывал соответствие стандарту. К тому же оказалось, что такие диски не могли прочитать некоторые плееры, и, наоборот, некоторые компьютеры уверенно их копировали.

В 2005 году Sony BMG стала использовать новую технологию DRM для защиты своих аудио-CD от копирования при прослушивании на персональном компьютере. Диск можно было воспроизводить на компьютере только с помощью специальной программы, записанной на нём; также можно было создать 3 резервных копии альбома. Помимо этого, на компьютер пользователя устанавливалась программное обеспечение, предотвращающее перехват аудиопотока во время воспроизведения. Устанавливалось это ПО без подтверждения пользователя. Устанавливаемое ПО содержало в себе руткит: оно скрывало файлы и каталоги, использовало вводящие в заблуждение названия процессов и сервисов, и не имело возможности удаления. Это создавало серьёзные уязвимости в безопасности системы пользователя. Поскольку программа представляла угрозу безопасности компьютера, Sony была вынуждена отозвать миллионы компакт-дисков. Позднее была обнаружена троянская программа, использующая уязвимость в DRM компании Sony. В результате подобного использования DRM на Sony было подано несколько коллективных судебных исков, которые, в большинстве своём, были разрешены путём выплаты финансовой компенсации пострадавшим потребителям, а также раздачей музыкальных альбомов в цифровом виде без DRM. При всех этих проблемах DRM от Sony слабо осуществляло свою основную цель – защиту от копирования, так как влияло лишь на проигрывание на компьютерах под управлением систем Microsoft Windows, оставляя «за бортом» другие устройства. Да и Windows-систему легко можно было обойти, например, банально выключив функцию автозапуска, не говоря уже об упомянутой аналоговой бреши.

В январе 2007 года EMI прекратили выпуск аудио-CD с DRM, объявив о нецелесообразности затрат на систему. Sony, после всех судов и проблем, также отказались от DRM-защиты. На данный момент ни один из четырёх крупнейших лейблов не поддерживает DRM.


Музыка в интернет

Многие интернет-магазины США, продающие музыку онлайн, используют DRM. Один из крупнейших – Apple iTunes Store – использовал систему DRM FairPlay вплоть до 2009 года. Система использует обычные аудиофайлы формата MP4. Каждый файл содержит звуковой поток в формате AAC, зашифрованный с помощью AES с использованием основного ключа, а также сам основной ключ, зашифрованный с помощью ключа пользователя. Ключи пользователя генерируются случайно для каждого сеанса, их копии хранятся на серверах Apple и в защищенном репозитории iTunes (клиентской программы, используемой для доступа к iTunes Store). Один и тот же аккаунт iTunes Store можно использовать не более чем на пяти компьютерах. iTunes позволяет копировать аудиофайл на неограниченное количество плееров iPod (при этом ключи пользователя также копируются во внутренний репозиторий плеера), однако на одном iPod можно использовать музыку, полученную не более чем из пяти различных аккаунтов. Apple не выдавала лицензии на собственный DRM сторонним компаниям, в результате чего только устройства от Apple, а также их медиа-проигрыватель QuickTime могли воспроизводить музыку из iTunes. iTunes также позволяет записывать аудиофайлы на компакт-диски. Один и тот же плей-лист можно записать не более семи раз, однако каждый отдельный файл можно записывать неограниченное число раз. Полученные аудио-CD не содержат DRM, поэтому несложно получить аудиофайлы без защиты, сделав копию компакт-диска, однако при этом качество звука может уменьшиться при перекодировании. Программа Requiem позволяет извлекать ключи пользователей из хранилища iTunes, однако Apple регулярно выпускает обновления, меняя способы хранения ключей.

Однако 6 февраля 2007 г. глава Apple Стив Джобс опубликовал открытое письмо «Мысли о музыке», в котором призвал звукозаписывающие компании продавать музыку без DRM. С начала 2009 года музыка в iTunes Store по соглашению с большинством издателей постепенно стала полностью доступна без DRM.

В России, несмотря на вступление в силу IV части Гражданского кодекса, многие музыкальные интернет-магазины до сих пор действуют полулегально, поэтому ни о каких средствах DRM говорить не приходится. Не говоря уже об использовании музыки в социальных сетях, столь популярных в России и странах СНГ.

Помимо стандартных подходов к DRM, некоторые магазины предлагают DRM-схему подписки. Например, сервис Sony Music Unlimited или онлайн музыкальный магазин Napster. Пользователи могут скачивать и прослушивать неограниченное количество музыки до тех пор, пока действует подписка. Однако с окончанием подписки все файлы перестают воспроизводиться.

В связи с тем, что схемы DRM у различных производителей отличаются между собой, иногда становится невозможным проигрывать музыку от разных производителей на одном устройстве, устройство может просто не поддерживаться DRM-схемой. Решением подобных проблем занимаются, например, в Англии.

Так, в 2006 году Эндрю Гауэрс составил список предложений по улучшению политики защиты авторских прав Gowers Review of Intellectual Property, которая содержит 54 пункта. Этот список находится в открытом доступе, и ознакомиться с ним может любой желающий. Среди всех прочих поправок пункты с 8 по 12 содержат предложения по созданию некоторых исключений для добросовестного использования авторских прав, например, библиотеками, также рассматривается возможность перехода от одной схемы DRM к другой. Впоследствии планировалось ввести подобные исключения и для обычных пользователей. Вообще проблема с различными DRM в проигрывателях стояла достаточно остро, например, Apple отказались от DRM-защиты в музыке полностью, благодаря чему музыка из iTunes проигрывается спокойно на любом устройстве, поддерживающем формат AAC. Некоторые магазины, например, немецкий Musicload, также объявили об отказе от DRM, так как выяснилось, что 3 из 4 звонков в их службу поддержки поступало от недовольных системой DRM пользователей.


Рингтоны для мобильных телефонов

Открытый Мобильный Альянс создал специальный стандарт для взаимодействия различных DRM-схем на мобильных устройствах. Изначально данная схема DRM содержала простой язык управления правами и широко использовалась для защиты рингтонов для мобильных телефонов. Данная схема запрещала копировать рингтоны с мобильных телефонов на другие устройства, например ПК. Широкого использования эта схема DRM так и не получила, несмотря на то, что язык был основательно расширен и улучшен.

4.2 Изображения, фильмы и телевиденье


Content Scramble System

Первой технологией защиты DVD от копирования являлась Content Scramble System (CSS). Эта технология использовалась с 1996 года. Каждый производитель лицензировал свой ключ DVD-проигрывателя для использования в своих устройствах у DVD Copy Control Association – организации, основанной DVD Forum. Каждый DVD, защищенный CSS, содержал ключ диска, который расшифровывался с помощью ключа данного DVD-проигрывателя, после чего можно было расшифровать всю остальную информацию на диске. Ключи записывались в lead-in области диска, чтобы сделать невозможным их непосредственное копирование. В 1999 году Джон Лех Йохансен, также известный как DVD Jon, опубликовал программу DeCSS, позволявшую расшифровывать и воспроизводить DVD-диски, защищенные CSS, в операционной системе Linux, для которой ключи проигрывателей не были лицензированы. Он использовал ключи, переданные анонимным хакером, который извлек их из программы XingDVD, хранившей ключи в открытом виде. Позже была найдена уязвимость, которая позволяла взломать защиту методом полного перебора на любом компьютере, мощность которого достаточна для воспроизведения DVD. В этом же году на системах Microsoft Windows появилась своя схема DRM, которая считывала инструкции из мультимедийных файлов на языке управления правами, в которых описывались разрешённые пользователю действия. Язык может определять, сколько раз можно проигрывать файл, можно ли записать его на внешний носитель, распечатать, переслать по интернету или скопировать на жёсткий диск.

На страницу:
1 из 2

Другие книги автора