Контрольная работа: Методы взлома защиты программы от несанкционированного доступа

case 10:

B+=100;

00411C08 8B 45 EC mov eax,dword ptr [B]

00411C0B 83 C0 64 add eax,64h

00411C0E 89 45 EC mov dword ptr [B],eax

break;

00411C11 EB 0B jmp WinMain+9Eh (411C1Eh)

case 20:

A+=200;

00411C13 8B 45 F8 mov eax,dword ptr [A]

00411C16 05 C8 00 00 00 add eax,0C8h

00411C1B 89 45 F8 mov dword ptr [A],eax

break;

}


Итак, мы видим следующее: под конструкциями языка высокого уровня Си находится то, во что превращает компилятор исходный код программы.

НАСТОЯТЕЛЬНО РЕКОМЕНДУЕТСЯ ПРОВЕСТИ ОЗНАКОМЛЕНИЕ С ДАННЫМ ПРИМЕРОМ И УЯСНИТЬ КОНСТРУКЦИИ АССЕМБЛЕРА, ЭКВИВАЛЕНТНЫЕ КОМАНДАМ ЯЗЫКА ВЫСОКОГО УРОВНЯ. ПОЛУЧЕННЫЕ ЗНАНИЯ БУДУТ НЕОБХОДИМЫ ДЛЯ ВОССТАНОВЛЕНИЯ АЛГОРИТМА СОЗДАНИЯ КЛЮЧА ПОЛЬЗОВАТЕЛЯ.

Работа с OllyDbg

Рассмотрим работу с этим отладчиком на примере версии 1.1 без дополнительных плагинов.

Для этого запустим программу и откроем в ней notepad.exe:

Рис. 15. Общий вид OllyDbg

Слева перед нами содержится окно, в которое выводится ассемблерный код программы, справа – панель с состоянием регистров (по правому щелчку можно выбирать, какие дополнительные регистры показывать – MMX, 3dNow! и так далее), внизу – дамп стека и оперативной памяти.

В окне с ассемблерным листингом указано смещение, hex-код, непосредственно ассемблерная команда, ему соответствующая, и расширенный комментарий. В качестве комментария часто выводится такая полезная информация, как например, имя вызываемой API-функции.

Дважды кликнув по команде, можно редактировать ее и заменять своей. Обратите внимание на меню, которое появляется при правом клике мышью. Меню Breakpoint позволяет управлять точками останова: Toggle (F2) ставит брейкпоинт на выбранной команде, Conditional Breakpoint – останов при выполнении некоторого условия, Run ToSelection – выполнить программу и остановиться на выбранной команде.

Меню Search for содержиттакиенезаменимыеопции, как All Referenced Text Strings и All Intermodular Calls. Открыв пункт Search for All Referenced Text Strings, можно увидеть все строковые данные, используемые в программе, и быстро перейти в то место, где они упоминаются. Приведем практический пример: программа проверяет серийный номер и в случае неудачи сообщает «Yourserialnumberisincorrect». Делаем поиск этой строки и осуществляем переход к тому месту, где вызывается соответствующий MessageBox; наверняка где-то недалеко идет проверка валидности серийного номера, которую можно либо пропатчить (например, забить теми же nop'aми) или попытаться разобраться в алгоритме и написать кейген. В меню пункт Search for AllIntemodularCalls можно найти список всех API-функций, используемых в программе, и поставить на нужных из них точку останова. В предыдущем примере можно было бы поставить breakpoint на MessageBoxA и ввести неправильный серийный номер – программа бы остановилась как раз на том месте, где нам нужно.

Кроме этих пунктов, есть еще множество других не менее полезных. Предлагаем студенту ознакомиться с ними самостоятельно.

Ну и, конечно, важным является меню Debug: надеемся, что стандартные команды вроде Trace Into или Step Over ни у кого проблем не вызовут.

Прочитав до этого места, студент должен считается достаточно подготовленным для выполнения данной лабораторной работы.


Практическая часть

Задание. Исследовать предоставленную программу, обладающую защитой от своего несанкционированного использования и взломать защиту разными способами

В процессе выполнения лабораторной работы необходимо:

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

К-во Просмотров: 201
Бесплатно скачать Контрольная работа: Методы взлома защиты программы от несанкционированного доступа