Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Введение. Логические (программные) защиты основываются на том предположении, что код программы не будет изучен и (или) изменен



Логические (программные) защиты основываются на том предположении, что код программы не будет изучен и (или) изменен. В этом случае приложение рассматривается как "черный ящик", на вход которого подается некоторая ключевая информация. Это может быть серийный номер, ключевой диск... — да все что придумает автор. Грубо все защиты можно разделить на две категории:

» основанные на знании (пароль, серийный номер); • основанные на обладании (ключевой диск, документация).

Любопытно, что первая категория защит в основном полагается на законода­тельство и законопослушность пользователей. Действительно, что помешает легальному пользователю "поделиться" паролем или сообщить серийный номер всем желающим? Конечно, подобное действие можно квалифицировать как "пиратство" и наказать нарушителя. Но точно так же можно наказать за распространение любого ПО, охраняемого авторским правом, вне зависимости от наличия/отсутствия на нем защиты.

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

В этих условиях "спасение утопающих — дело рук самих утопающих". Разработчики ПО используют специальные методы, препятствующие нелегально­му тиражированию своей продукции. Самые распространенные сегодня защи­ты — это пароли и серийные номера. Как уже было отмечено выше, наивно полагаться на то, что это затруднит копирование. Серийные номера содержатся в файлах read.те на дисках, печатаются на обложках, помещаются на общедо­ступных серверах в Интернете и публикуются в телеконференциях.

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

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

Рассмотрим простейший пример (file://CD:\SOLIRCE\VC\BREAKOO). Это программа под Win32, использующая библиотеку MFC. Под MS-DOS использу­ются в целом те же принципы защиты, но с небольшими расхождениями. Иногда я на них буду обращать внимание, иногда нет. Не то чтобы взлом досовских приложений перестал быть актуальным, но местами различия не настолько значительны, чтобы стоило отвлекать и запутывать читателя.

Запустим break00.exe на выполнение. Программа просит ввести пароль. Чтобы сравнить его с введенным, оригинальный пароль должен как-то храниться в программе. Очевидным способом является простое посимвольное сравнение

if ((s0-ch)!="KPNC") cout << endl << "Password fail" <<endl;

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

Можно было бы просто просматривать текст программы в любом hex-вьювере, но это утомительно, особенно для больших файлов. Поэтому воспользуемся утилитой — "текстовым фильтром", которая анализирует файл и записывает все встретившиеся текстовые строки. Рекомендую воспользоваться собственной Ы-ter. corn.

Рассмотрим полученный листинг.

смещение в файле текстовая строка

24FA: Winit

250C: MSVCP

3020: Password OK

3030: Password fail

3040: KPMC

3048: Enter password

305C: CrackMe

3067: Try to path code of found valid password

3094: Fatal Error

З0A0: MFC initialization failed

Обратим внимание на строку, находящуюся по адресу 0х3040. Не правда ли она могла бы быть паролем? Чаще всего (но необязательно) искомая строки располагается близко к тексту "введите пароль". Ниже мы видим еще одного "кандидата".

Давайте проверим, подойдет ли хотя бы один из них?

CrackMeOI: Try to path code of found valid password

Enter password: КРNС

Password OK!

Press any key to continue

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

Более надежным способом (но, увы, и более трудоемким) является дизассем-блирование программы и анализ алгоритма защиты. Это трудоемкая и кропотли­вая работа, требующая не только знаний ассемблера, но и усидчивости, а также немного интуиции.





Дата публикования: 2014-11-18; Прочитано: 302 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...