ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ. 2
ГЛАВА 1. Обзор предметной области. 3
1.1. Рынок программного обеспечения. 3
1.2. Классификация программных продуктов. 4
ГЛАВА 2. Угрозы программным продуктам.. 5
2.1. Незаконное копирование программ.. 6
2.2. Незаконный доступ к программным продуктам.. 6
2.3. Несанкционированное изучение кода и алгоритмов программ.. 6
2.3.1. Метод экспериментов. 7
2.3.2. Статический метод. 8
2.3.3. Динамический метод. 9
2.4. Модификация программ.. 11
ГЛАВА 3. Организационные и правовые методы защиты программных продуктов. 13
ГЛАВА 4. Технические методы защиты компьютерных программ.. 16
4.1. Методы защиты от изучения кода и алгоритмов программ.. 16
4.1.1. Динамическое изменение кода программы.. 17
4.1.2. Искусственное усложнение структуры программы.. 18
4.1.3. Нестандартное обращения к функциям операционной системы.. 18
4.1.4. Искусственное усложнение алгоритмов обработки данных. 18
4.1.5. Выявление факта работы отладчика. 19
4.1.6. Обфускаторы.. 24
4.1.7. Сравнение методов защиты от изучения код. 35
Вывод. 36
4.2. Методы защиты от модификации. 37
4.3. Методы защиты от копирования. 39
ЗАКЛЮЧЕНИЕ. 42
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.. 43
ПРИЛОЖЕНИЕ А. ПРИМЕР РЕАЛИЗАЦИИ АЛГОРИТМА ВЫЯВЛЕНИЯ ФАКТА РАБОТЫ ОТЛАДЧИКА.. 44
Актуальность темы исследования. Последняя четверть 20-ого века стала прорывом человечества в области компьютерных технологий. За это короткое время компьютер стал неотъемлемой частью жизни человека. В настоящее время, компьютеры используются во всех отраслях человеческого общества и доля компьютеризации все увеличивается. Причин, такого быстрого и неуклонного процесса компьютеризации несколько: это и освоение полупроводников, и развитие технологии производства микросхем, но важнейшим, по-моему, является развитие программного обеспечения. Когда стало ясно, что программное обеспечение является мощнейшим инструментом, позволяющим на одном и том же компьютерном оборудовании решать великое множество разнообразных задач, усилия специалистов стали направлены на доступность и упрощение разработки нового программного обеспечения. Так появились языки программирования высокого уровня (Fortran, C, Pascal), открывшие дорогу индустрии программного обеспечения. В 70-х, 80-х годах прошлого столетия разработка программного обеспечения ЭВМ «выходит» из университетских лабораторий и обосновывается в лабораториях коммерческих компаний - разработчиков, для которых программное обеспечение является не столько средством, сколько продуктом.
Компании-разработчики программного обеспечения, прежде всего, заинтересованы в коммерческой выгоде от своих продуктов. Выручка их напрямую зависит от количества легальных пользователей их продуктов. Соответственно, легальность использования программ определяется сложностью или невозможностью незаконного их использования, а количество пользователей зависит от возможностей программного продукта, его надежности, безопасности и уникальности, с точки зрения отсутствия подобных инструментов у конкурентов. Для комплексного решения этих вопросов компании защищают свои программные продукты различными способами.
Цели и задачи исследования. Целью работы является анализ существующих методов и инструментов защиты программного обеспечения от реверс-инжиниринга, последующее исследование и оценка их эффективности. Дальнейшее выявление наиболее действенных способов защиты программных продуктов, а также обобщение результатов и выявление наиболее эффективной̆ комбинаций методов и инструментов.
В настоящее время качество жизни человека, а иногда и сама жизнь, все сильнее зависит от надежности и функциональности программного обеспечения, которое он использует. Поэтому компании-производители программ обязаны защитить не только свой программный продукт, а главное - обеспечить безопасность пользователей своих программ. Технологии взлома, модификации и копирования программных продуктов с каждым годом становятся все изощреннее и дополняют друг друга. Например, для незаконного копирования используется модификация программных продуктов, а для модификации часто требуется изучение кода. Поэтому производители должны использовать все современные достижения в области компьютерных наук, чтобы сделать свой продукт максимально безопасным.