4.2 Список корректных паролей
При проверке пароль делится на две части - это первые 4 цифры и последние 10. Пароли размещены в участке памяти 4A8C44 - 4A8F65, разделены между собой точками. Любой первый корректный блок пароля сочетаются с любым вторым корректным блоком.
Список корректных паролей:
Первый блок:
; 1397; 1461; 1556; 1612; 2407; 2434; 2503; 2976; 3156; 3347; 3487; 3601; 3930; 4105; 4118; 4356; 4363; 4401; 4543; 4558; 4852; 4982; 4993; 5186; 5377; 5654; 5691; 5797; 5897; 5971; 6130; 6317; 6323; 6381; 6556; 6697; 6750; 7383; 7609; 7715; 7846; 7929; 8160; 8867; 8985; 9287; 9377; 9740; 9982.
Второй блок:
; 1275215397; 1566343884; 2565740578;
2662106601; 2691296134; 2891286439; 2976152334; 3129671956; 3215798652;
3310760636; 3408623238; 3613335510; 3613792109; 3682429757; 4137188610;
4342271231; 4576195302; 4794974223; 4866392884; 5488323045; 5576649531; 5705914986;
5742793638; 5843296280; 5916854666; 5928777782; 6239733951; 6354493062;
6447348785; 6470649685; 6843086169; 7137982050; 7408689513; 7590100831;
7712302712; 7803659454; 7838394308; 7873203406; 8100684409; 8552081097;
8575123438; 8692973288; 8728706126; 9211123348; 9374109406; 9507362991;
9633769196; 9755066544; 9932579398
5.
Реализация «жесткого» взлома программы
Следующей целью исследования был поиск мест сверки введенного пароля со сгенерированным программой.
Войдем в данную процедуру и увидим следующий
код:
В случае равенства eax
и edx осуществляется
переход по адресу 404ABA:
Как видно, в процедуре CALL sub_00404A1C происходит сравнение регистров eax и edx. Если они равны, то флаг нуля устанавливается в единицу, прыгает в конец процедуры, и программа выходит из процедуры, ZF=1 позволяет не условный осуществлять переход находящийся после процедур. В случае если сравниваемые регистры не будут равны после 50 итераций цикла, программа не перейдет на участок кода, с сообщением об успешной регистрации: " Thank you for using our product!".
Значит, необходимо сделать условный переход по
адресу 404A25 на безусловный,
либо сменить условие на противоположное. Для изменения байта программы откроем
шестнадцатеричный редактор кода и изменим значение по адресу 404A26
с 84 на 85.
При выполнении данных шагов, был получен
следующий результат (Рис. 10).
6.
Блок-схема алгоритма модуля защиты
7.
Рекомендации
по улучшению механизма защиты
В качестве возможных мер по повышению уровня защиты данного программного продукта можно посоветовать следующие:
В первую очередь, защитить от дизассемблирования и отладки код программы, например, динамическим шифрованием кода программы или же внедрением механизмов поиска и идентификации средств отладки;
Осуществить привязку регистрационного кода к
имени, к некоторым аппаратным особенностям компьютера пользователя, чтобы каждой
конкретной ЭВМ даже при одинаковых именах соответствовал свой регистрационный
код с максимально малой вероятностью его совпадения его с другими.
Заключение
Подводя итог, можно сказать, что защита данной программы очень слаба в плане защиты ПО от несанкционированного использования. При этом не используются никакие механизмы защиты от дизассемблирования и отладки.
Жесткий взлом получилось осуществить, всего лишь изменив необходимую строчку кода (более того, было найдено несколько вариантов изменения кода программы).
Также был осуществлен и мягкий взлом. Мне
удалось найти список корректных паролей внутри программы.
Список использованной литературы
1. Мельников В.П. Информационная безопасность и защита информации : учеб. пособие для студ. вузов / В. П. Мельников, С. А. Клейменов, А. М. Петраков ; под ред. С. А. Клейменова. - 4-е изд., стер. - М. : Академия, 2009. - 336 с. (50 экз)
2. Хореев П.Б.. Программно-аппаратная защита информации : учеб. пособие / П. Б. Хорев. М. : Форум, 2009 - 352 с. (5 экз).
3. Проскурин В.Г.. Программно-аппаратные средства обеспечения информационной безопасности. Защита в операционных системах : учеб. пособие для вузов / В.Г. Проскурин. М. : Радио и связь, 2000. - 168 с.