Читать доклад по информатике, вычислительной технике, телекоммуникациям: "Как ломать программы Windows (C) ED!SON [UCF], перевод Mr.Boco/TCP" Страница 3

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

в регистре EAX и что EAX был EBP-34h. Поэтому нам стоит взглянуть на EBP-34h:

:d ebp-34

Вы должны были увидеть текст, который вы ввели в диалоговом окне. Теперь мы должны найти место, где Ваш номер сравнивается с реальным серийным номером. Поэтому мы пошагово трассируем программу при помощи F10 до тех пор, пока не встретим что-нибудь о EBP-34. Не пройдет и нескольких секунд, как Вы наткнетесь на следующий код:

>LEA EAX, [EBP+FFFFFF64] ; EAX = EBP-9C

LEA ECX, [EBP-34] ; ECX = EBP-34

PUSHEAX ; Сохраняет EAX

PUSHECX ; Сохраняет ECX

>CALL00403DD0 ; Вызывает функцию

ADD ESP, 08 ; Удаляет сохраненную информацию

TESTEAX, EAX ; Проверяет значение функции

JNZ 00402BC0 ; Прыгает, если не "ноль"

Мне кажется, что это выглядит как вызов функции сравнения двух строк.

Эта функция работает так: на входе - две строки, на выходе - 0, если они равны и любое другое значание, если не равны.

А зачем программе сравнивать какую-то строчку с той, что Вы ввели в окне диалога? Да затем, чтобы проверить правильность Вашей строки (как Вы, возможно, уже догадались)! Так-так, значит этот номер скрывался по адресу [EBP+FFFFFF64]? SoftICE не совсем корректно работает с отрицательными числами и поэтому настоящий адрес следует посчитать:

100000000 - FFFFFF64 = 9C

Вы можете сделать это вычисление прямо в SoftICE:

:? 0-FFFFFF64

Число 100000000 слишком велико для SoftICE, а вычитание из 0 дает тот же

самый результат.

Наконец пришло время взглянуть, что же скрывается по адресу EBP-9C...

:d ebp-9c

В окне данных SoftICE Вы видите длинную строчку цифр - это серийный номер!

Но Вы помните, что я говорил Вам раньше? Два типа регистрации - два разных серийных номера. Поэтому после того, как Вы записали на бумажечку первый серийный номер, продолжайте трассировать программу при помощи F10. Мы дошли до следующего куска кода:

>LEA EAX, [EBP-68] ; EAX = EBP-68

LEA ECX, [EBP-34] ; ECX = EBP-34

PUSHEAX ; Сохраняет EAX

PUSHECX ; Сохраняет ECX

>CALL00403DD0 ; Снова вызывает функцию

ADD ESP, 08 ; Удаляет сохраненную информацию

TESTEAX, EAX ; Проверяет значение функции

JNZ 00402BFF ; Прыгает если не "ноль"

И что Вы видите по адресу EBP-68? Второй серийный номер!

:d ebp-68

Вот и все... Я надеюсь, что у Вас все получилось как доктор прописал? =)

3.2 Command Line 95 - легкая регистрация "имя-код", создание генератора ключей

Это программа - хороший пример, с легким алгоритмом генерации кода.

3.1.1 "Обследование"

Вы осмотрели программу и увидели, что это 32-битное приложение, требующее имя и код в окне регистрации. Поехали!

3.1.2 Прерывание программы

Мы поступаем так же, как и с Task Lock'ом - ставим брейкпоинты. Можно даже поставить сразу два брейкпоинта на наиболее возможные функции: GetWindowTextA и GetDlgItemTextA. Нажмите Ctrl-D, чтобы вызвать отладчик и наберите в окне команд:

:bpx getwindowtexta

:bpx getdlgitemtexta

Теперь возвращайтесь в прерванную программу, идите в окно регистрации и вводите имя и какой-нибудь номер (обыкновенное целое число - это наиболее вероятный код). Я написал примерно следующее:

Name:ED!SON '96

Code:12345

Программа остановилась на GetDlgItemTextA. Так же, как и в случае с Task Lock'ом, мы нажимаем F11 чтобы вернуться в вызывающюю функцию. Просматриваем окно кода при помощи Ctrl+Up. Вызов функции выглядит так:

MOV ESI, [ESP+0C]

PUSH 1E; Максимальная длина

PUSH 0040A680; Адрес буфера

PUSH 000003ED; Идентификатор управления

PUSH ESI; Идентификатор окна диалога

CALL [User32!GetDlgItemTextA]

Число 40A680


Похожие работы

 
Тема: Содержание программы Паспорт программы «Будь здоров». Введение. Информационно аналитическая справка. Концептуальное обоснование и основные направления программы > Содержание программы. 
Предмет/Тип: Другое (Реферат)
 
Тема: Актуальность программы, цели и задачи структура программы курса Компетенции обучающихся, как совокупный ожидаемый результат по завершении освоения программы Календарный учебный график программы обучения
Предмет/Тип: Другое (Учебное пособие)
 
Тема: Перевод в России: перевод в эпоху Петра I и Екатерины II
Предмет/Тип: Английский (Реферат)
 
Тема: Описание программы обработки белковых фракций сыворотки крови. 8 Описание программы обработки данных электрофореза липопротеидов 16 > Описание программы обработки данных электрофореза фракций лдг.
Предмет/Тип: Другое (Реферат)
 
Тема: Спецификация программы uWert > Текст программы uWert Доказательство корректности программы uWert Организация многооконного интерфейса и диалога в приложениях
Предмет/Тип: Другое (Реферат)

Интересная статья: Основы написания курсовой работы