47580 (572038), страница 2

Файл №572038 47580 (Методы взлома защиты программы от несанкционированного доступа) 2 страница47580 (572038) страница 22016-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

Выполнение программы должно прекратиться в поставленной нами точке. Теперь перейдем от отображения в виде Си к ассемблеру путем перехода к вкладке Disassembly (рис. 14 и 15).

Рис. 14. Исходный код программы

Рис. 15. Дизассемблированный вид программы

Попробуем подойти с практической точки зрения и посмотрим, во что превращаются некоторые стандартные конструкции языка Си.

Рассмотрим комплекс инструкций:

ULONG A, B;

A = GetTickCount();

B = 10;

if (A > B)

{

A--;

}

for (A = 0; A < 100; A++)

{

B++;

}

switch(A)

{

case 10:

B+=100;

break;

case 20:

A+=200;

break;

}

Примечание: если Вы захотите просмотреть это на реальном примере, то либо перейдите в режим DEBUG, либо отключите оптимизацию компилятора, так как в полученном вами исполняемом файле данная конструкция, скорее всего, не встретится, потому что компилятор посчитает ее неиспользуемой и такой, что не стоит включения в конечный исполняемый файл.

Итак

ULONG A, B;

A = GetTickCount();

00411B9E 8B F4 mov esi,esp

00411BA0 FF 15 1C C2 42 00 call dword ptr [__imp__GetTickCount@0 (42C21Ch)]

00411BA6 3B F4 cmp esi,esp

00411BA8 E8 72 F8 FF FF call @ILT+1050(__RTC_CheckEsp) (41141Fh)

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

B = 10;

00411BB0 C7 45 EC 0A 00 00 00 mov dword ptr [B],0Ah

if (A > B)

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

00411BBA 3B 45 EC cmp eax,dword ptr [B]

00411BBD 76 09 jbe WinMain+48h (411BC8h)

{

A--;

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

00411BC2 83 E8 01 sub eax,1

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

}

for (A = 0; A < 100; A++)

00411BC8 C7 45 F8 00 00 00 00 mov dword ptr [A],0

00411BCF EB 09 jmp WinMain+5Ah (411BDAh)

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

00411BD4 83 C0 01 add eax,1

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

00411BDA 83 7D F8 64 cmp dword ptr [A],64h

00411BDE 73 0B jae WinMain+6Bh (411BEBh)

{

B++;

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

00411BE3 83 C0 01 add eax,1

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

}

00411BE9 EB E6 jmp WinMain+51h (411BD1h)

switch(A)

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

00411BEE 89 85 F4 FE FF FF mov dword ptr [ebp-10Ch],eax

00411BF4 83 BD F4 FE FF FF 0A cmp dword ptr [ebp-10Ch],0Ah

00411BFB 74 0B je WinMain+88h (411C08h)

00411BFD 83 BD F4 FE FF FF 14 cmp dword ptr [ebp-10Ch],14h

00411C04 74 0D je WinMain+93h (411C13h)

00411C06 EB 16 jmp WinMain+9Eh (411C1Eh)

{

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 To Selection – выполнить программу и остановиться на выбранной команде.

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

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

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

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


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

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

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

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

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

  3. Выделить в программе участок кода, ответственный за формирование корректного пароля, соответствующего введенному имени пользователя. Исследовать данный код и формально записать алгоритм формирования корректного пароля. Используя код программы, ответственный за формирование правильного пароля, создать генератор паролей.

  4. Осуществить взлом установленной защиты, используя некоторый пользовательский идентификатор (имя пользователя) и соответствующий ему корректный пароль, сформированный по найденному в п.3 алгоритму.

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

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

Для решения данных задач рекомендуется использовать следующие средства динамического и статического исследования ПО:

  1. Interactive DisAssembler Pro v 4.51 и выше.

  2. Hiew 6.81 и выше.

  3. Встроенный отладчик IDE MS Visual Studio 2003/2005, OllyDbg или же SoftIce


Рекомендуемая литература

  1. Крис Касперски. Техника и философия хакерских атак. Записки мыщ’а. 2-е издание, переработанное и дополненное.

  2. То же самое, только первое издание.

  3. В.И. Юров. Assembler. Учебник для ВУЗов. (любое из изданий).

  4. Крис Касперски. Образ мышления – дизассемблер IDA.

  5. Р.А. Айрапетян. Отладчик SoftIce. Подробный справочник.

Характеристики

Тип файла
Документ
Размер
120,2 Mb
Учебное заведение
Неизвестно

Список файлов ответов (шпаргалок)

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7021
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее