Низкоуровневый анализ машинного кода. Для студентов технических специальностей
Иван Андреевич Трещев
Анастасия Сергеевна Ватолина
Владислав Александрович Сериков
Данная книга содержит практические аспекты по анализу исходных текстов программ при отсутствии к ним доступа. Предполагается наличие знаний языка ассемблер и C++/C#, Python у читателя.
Низкоуровневый анализ машинного кода
Для студентов технических специальностей
Иван Андреевич Трещев
Анастасия Сергеевна Ватолина
Владислав Александрович Сериков
За каждым успешным кодером стоит еще более успешный декодер, который понимает этот код.
Аноним
© Иван Андреевич Трещев, 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 Виды защиты
Как и говорилось выше, есть различные опции для защиты ПО от взлома и копирования. Они могут отличаться по стоимости, уровню защиты и специализации.