Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник 400.docx
Скачиваний:
25
Добавлен:
30.04.2022
Размер:
3.61 Mб
Скачать

2.1.2 Исследование программы Denoiser

Это Shareware программа, поэтому рассмотрим более детально алгоритм регистрации ПО такого рода (допустим, нам нужно зарегистрировать программу X_PROG):

Получение регистрационного номера:

  1. Пользователь перечисляет сумму разработчикам, и сообщает некоторые данные: например, свой ник (для удобства пусть это будет «USER_NICKNAME»)

  2. Разработчики используют специальный алгоритм (скажем ALG) , для преобразования «USER_NACKNAME» в ключевую информацию, необходимую для корректной работы X_PROG.

  3. Полученный ключ (пусть это будет «VALID_KEY») отправляется пользователю.

Регистрация программы:

  1. Пользователь запускает X_PROG. Она пытается прочитать сохраненные данные регистрации (при этом пусть данные о пользователе хранятся в переменной REG_NAME, а ключ регистрации в S_N)

  2. Если сохраненных данных нет, то выполнить пункт 6

  3. Программа, используя тот же самый алгоритм ALG, что и разработчики, преобразует REG_NAME в ключ REG_KEY.

  4. REG_KEY сверяется c ключом S_N.

  5. Если они совпадают, то для программы это означает, что программа уже зарегистрирована и происходит скачок на пункт 11.

  6. Программа показывает окно регистрации и просит пользователя ее зарегистрировать.

  7. Пользователь в поле регистрации REG_NAME вводит «USER_NICKNAME», а в поле S_N – полученный им ключ «X_KEY».

  8. Происходит то же самое что и в пункте 3.

  9. REG_KEY сверяется c ключом S_N. Если они совпадают, то регистрация успешно закончена. Программа сохраняет данные регистрации, чтобы каждый раз не запрашивать данные пользователя. Затем выполняется пункт скачок на пункт 11

  10. Программа работает в демонстрационном режиме (ограниченная версия).

  11. Программа работает в полном режиме. Пользователь радуется.

Наша испытуемая программа Denoiser.exe не будет работать в полном режиме, пока она не будет авторизована – при этом, после запуска, программа явно требует регистрационный код. Авторы данного произведения допустили одну небольшую оплошность – при вводе некорректного S/N(serial number) программа выдает сообщении “Wrong registration code”. Оплошность - это потому, что разработчики практически «нарисовали стрелку», указывающую на защитный механизм! То есть, если мы найдем программный код, который выводит сообщение на экран, то окажемся прямо в хвосте защиты[5].

Теперь можно приступать к исследованию. Для удобства сохраните копию оригинального файла «Denoiser.exe», например, скопировав его в другую папку.

QView - это редактор файлов, который представляет собой простой дизассемблер с полной поддержкой команд микропроцессора семейства i386. При нажатии комбинации ALT+F на экране появится окно для загрузки файла в редактор (см. рисунок 1) Найдите и откройте Denoiser.exe.

Рис. 1. Окно для загрузки файла в редактор

В любом случае проверим. Откроем «DLL_REG.DLL» в редакторе, опять нажмем F7 и введем «Wrong reg». Нашли! Строка располагается по адресу 0001B368. Теперь встает вопрос – как искать код который выводит эту строку на экран. Скорее всего (это можно определить по виду окна) - это стандартная функция Windows – MessageBox, которая принимает следующие параметры:

int MessageBox(

HWND hWnd, // handle of owner window

LPCTSTR lpText, // address of text in message box

LPCTSTR lpCaption, // address of title of message box

UINT uType // style of message box

);

то есть – hWnd – идентификатор окна, который нам абсолютно не интересен, lpText – адрес выводимого текста (как раз нашего сообщения), lpCaption – адрес строки заголовка, uType – стиль сообщения (используется для показа дополнительных кнопок, а так же иконок – «Ошибка», «Информация», «Предупреждение» и так далее..). Если эту функцию представить в виде машинных команд, то она будет выглядеть следующим образом:

PUSH uType

PUSH lpCaption

PUSH lpText

PUSH hWnd

CALL MessageBoxA

То есть в программе будет присутствовать команда “PUSH XXXXXXXX” – где «иксы» - это шестнадцатеричное представление адреса строки. Адрес, который мы нашли – это физический адрес, поэтому для нас не подходит. Вся проблема в том, что после загрузки программы в память происходит «настройка адресов» - то есть преобразование физических в виртуальные, посредством специальной таблицы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]