Читать книгу «Низкоуровневый анализ машинного кода. Для студентов технических специальностей» онлайн полностью📖 — Ивана Андреевича Трещева — MyBook.
image

Низкоуровневый анализ машинного кода
Для студентов технических специальностей
Иван Андреевич Трещев
Анастасия Сергеевна Ватолина
Владислав Александрович Сериков

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

Аноним


© Иван Андреевич Трещев, 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 Удобство пользователя

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

На этой странице вы можете прочитать онлайн книгу «Низкоуровневый анализ машинного кода. Для студентов технических специальностей», автора Ивана Андреевича Трещева. Данная книга имеет возрастное ограничение 18+, относится к жанрам: «Прочая образовательная литература», «Книги о компьютерах».. Книга «Низкоуровневый анализ машинного кода. Для студентов технических специальностей» была издана в 2020 году. Приятного чтения!