русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Чистый взлом или укрощение about'а


Дата добавления: 2015-06-12; просмотров: 559; Нарушение авторских прав


Надпись "Registered to" это, конечно, хорошо, только не понятно - на кого именно программа зарегистрирована. Первое, что приходит на ум - найти этот "Registered to" в программе (он там находится по смещению 50DBA4h) и заменить его на "hacked by KPNC", однако более длинный ник вместить уже не удастся, поскольку предельно допустимая длина строки жестко ограничена сверху. Лучше найдем тот код, который эту строку выводит!

Запускаем Kerberos, загружаем winrar.exe, открываем "About", закрываем winrar.exe и лезем в протокол, в конце которого содержится строка, DialogBoxParamA(400000, 496005: "ABOUTRARDLG", 001200AA, 00444618, 00000000), вызываемая по адресу 441D1Ch. Ага, это наш About Rar Dialog и есть! Возвращаемся в ИДУ и переходим по указанному адресу.

00441D01 push offset sub_444618 ; lpDialogFunc

00441D06 push dword_4B161C

00441D0C push offset aAboutrardlg

00441D11 push hLibModule

00441D17 call DialogBoxParamA

Листинг 4.Код, создающий About-диалог.

Функция sub_444618, как и подсказывает IDA, представляет собой диалоговую процедуру, ответственную за вывод диалога. Заглянем, что там? Ой-ой-ой, сколько всяких вызовов! Это же крышей поехать можно, пока разберешься, что к чему! Мы видим множество вызовов SetDlgItemTextA. Какой из них наш? Чтобы ответить на этот вопрос, требуется выяснить идентификатор соответствующего элемента управления.

Запускаем Microsoft Visual Studio (или любой другой редактор ресурсов), говорим "open file", в "типе файлов" выбираем "все файлы", а в "open as" - "resources" (если этого не сделать, файл будет открыт как двоичный, что совсем не входит в наши планы). В дереве ресурсов находим ветку "Dialogs", а в ней - "ABOUTRARDLG". Щелкнем по нему мышью. Дважды. Или нажмем ENTER. Запустится редактор ресурсов. Находим строку "40 days trial copy" на месте которой в зарегистрированной версии выводится "Registered to" и, вызвав контекстное меню, определяем ее ID, равным в данном случае 102 (или 66 в hex-представлении).



Рисунок 9.Определение идентификатора поля вывода в Microsoft Visual Studio.

Просматривая дизассемблерный листинг, ищем такую функцию SetDlgItemTextA, чьим аргументом будет идентификатор 66h и находим ее, в конечном счете, по адресу 4447ECh:

004447E6 call sub_4113DC

004447EB push eax ; lpString

004447EC push 66h ; nIDDlgItem

004447EE push [ebp+hDlg]

004447F1 call SetDlgItemTextA

Листинг 5.Код, выводящий строку "Registered to".

Функция sub_4113DC возвращает указатель на выводимую строку, которая тут же передается SetDlgItemTextA. Исследовать саму sub_4113DC мы не будем. Имя зарегистрированного пользователя берется из ключевого файла, над которым можно просидеть всю оставшуюся жизнь. Лучше внедрить свою строку в исполняемый файл и подменить указатель. Внедряться мы будем в секцию данных, в хвосте которой практически всегда имеется свободное место. Размещать выводимую строку в секции кода нельзя, поскольку RAR требует, чтобы она была доступа на запись.

Рисунок 10.Каталог секций.

Открываем hiew, однократным нажатием на <ENTER> переходим в hex-режим, давим <F8> для отображения заголовка файла и вызываем таблицу объектов (object table) клавишей <F6>. За секций .data расположена секция .tls. Подгоняем сюда курсор и нажимаем на ENTER, а затем перемещаемся на несколько строк вверх, следя за тем, чтобы не залезть в значимые данные, которые начинаются там, где кончается цепочка нулей. В нашем случае это будет адрес 49D7B0h (хотя при желании также можно выбрать 49D7AEh, 49D7AFh и т.д). Нажимаем <F3> для перехода в режим редактирования и записываем "registered version hacked by nezumi" (nezumi - это мыщъх по-японски).

Рисунок 11.Создание подложной строки с именем зарегистрированного пользователя.

Теперь переходим по адресу 4447E6h, возвращаясь к нашей диалоговой процедуре (см. листинг 5) и заменяем call sub_4113DC (E8 F1 CB FC FF) на mov eax, 49D7B0 (B8 B0 D7 49 00), где 49D7B0h - адрес хакнутой строки. Сохраняем изменения в файле и...

Рисунок 12.Полностью хакнутая версия, зарегистрированная на мыщъх'а.

Это работает! Теперь хакнутая версия ничем не отличается от легально зарегистрированной! Разумеется, это еще не означает, что теперь RAR'ом можно пользоваться и ничего за него не платить (законов ведь никто не отменял!), поэтому сразу же после экспериментов взломанный файл должен быть удален с жесткого диска.

 



<== предыдущая лекция | следующая лекция ==>
Принудительная регистрация | Вирусы и антивирусные программы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.499 сек.