Target: Internet Maniac 1.2
Description: Tools for Internet
Used tools: Ida Pro 3.8b, HIEW 6.11

 

Итак, запускаем программу. Видим, что ограничений нет. Есть только раздражающий
заголовок «UNREGISTERD — Internet Maniac». Пытаемся зарегистрировать: Help->Register… Вводим какое-нибудь имя и код и
жмем Register. Появляется сообщение «Incorrect registration
code!». Ну что ж, загружаем Internet Maniac в Ida, переходим в секцию данных:
View->Segments и выбираем .data и ищем текст сообщения ( ALT+T ).
Находим его по адресу 00413598. Ida заботливо сопоставил адресу значение
aIncorrectRegis, поэтому для поиска выводящего это сообщение кода надо искать не
00413598, а aIncorrectRegis. Ищем (ALT+T). Находим такой код:

.text:0040520D: loc_0_40520D:
.text:0040520D: push 10h
.text:0040520F: push offset aFailure
.text:00405214: push offset aIncorrectRegis
.text:00405219: push esi
.text:0040521A: call ds:MessageBoxA

Здесь все ясно: происходит вызов функции MessageBoxA с передачей ей четырех
параметров. Этой ветке управление передается в случае неправильного серийного
номера. Найдем место, где сравниваются серийники (Делаем поиск loc_0_40520D).
Находим:

.text:004051B7: call sub_0_407FD0 ; Это процедура проверки серийника
.text:004051BC: add esp, 8
.text:004051BF: test eax, eax
.text:004051C1: jz short loc_0_40520D

Решение очевидно: запускаем HIEW, переходим в режим дизассемблера:
F4->Decode. Переходим на адрес 004051C1: F5-> .4051C1 и забиваем jz: F3->9090, сохраняем: F9.
Теперь любой серийник будет восприниматься как правильный! (Можно было вместо
jz поставить jnz, тогда принимались бы все, кроме правильных!).

Можно теперь запускать прогу и регистрировать ее, заголовок стал нормальным и
в окне About наши данные, однако при перезапуске программы через пять секунд
заголовок опять плохой. Значит, там стоит таймер на пять секунд, потом проверяется
на валидность введенный ранее серийник (Если что, настройки с серийником 
хранятся в файле %WINDIR%\SumitSoft.ini) и если он не правильный, то выводится
плохой заголовок и в случае первого запуска
— сообщение с необходимостью зарегистрироваться. Чтобы избавиться от этого проще всего удалить создание этого
этого таймера. Ясно, что место установки таймера должно содержать инструкции:

push 1388h ; 1388h = 5000 = 5 секунд

call ds:SetTimer

Находим по поиску 1388h два подходящих варианта:

.text:004040EC: mov esi, ds:SetTimer
…..
.text:004040FB: push 1388h
.text:00404100: push 63h
.text:00404102: push ebx
.text:00404103: call esi

и еще оди по адресу .text:004078В6

Методом эксперимента (ставим push 0000h вместо push 1388h) определяем, что
первый таймер — искомый. Забиваем push’и и call — все программа 
зарегистрирована! 

Теперь нужно подумать — как распространять наше творение? Можно, конечно,
написать программу, которая будет сама менять нужные байты, но она, во-первых,
имеет не очень маленький размер, а во-вторых на нее наложены законодательные
ограничения, поэтому я, как советует небезызвестный Крис
Касперски в своей книге «Техника и философия хакерских атак» (стр.74), предпочитаю создавать
crk-файлы, которые не только законны, но также в свою очередь и защищены
авторским правом! Для создания этих файлов рекомендуется программа c2u by
Professor Nimnul. C2U.EXE «Internet Maniac.exe» «Internet Maniac00.exe» — все! Мы получили crk
файл, который можно абсолютно легально распространять!

Оставить мнение

Check Also

Как сделать игру. Выбираем движок и пишем клон тех самых «танчиков»

С каждым днем игры становятся все сложнее и навороченнее. Быть инди, а точнее соло-разрабо…