Исследование защиты программы APIS32
Скриншот программы APIS32
APIS32 - утилита для просмотра функций API, используемых тем или иным приложением Windows. Вам достаточно выбирать нужные вам функции из списка, запускаете программу-жертву, а APIS32 выдаст полный отчет о всех вызовах этих функций из нее. Если я не ошибаюсь, это одна из первых программ такого рода, но автор явно погорячился, сделав ее платной. Инструменты для реверса просто обязаны быть бесплатными.
На официальном сайте разработчика по какой-то причине убраны все упоминания об этой программе, но осталась прямая ссылка на дистрибутив. Может быть автору стало стыдно, что он по молодости выпустил платную программу, я не знаю. Скачиваем, устанавливаем, смотрим. Исполняемый файл упакован самодельным пакером, по всей видимости прототипом или ранней версией MPRESS (это упаковщик от автора программы). С ним легко справляется QuickUnpack, но можно без особых проблем распаковать и вручную.
Распаковываем исполняемый файл
Проверяем распакованный файл. Все работает. Признаки триальности долго искать не придется, одних только надписей "UNREGISTERED" в программе как у дурака махорки. С них и начнем. Я надеюсь, вы не забыли отправить распакованный файл в дизассемблер?
Нехорошая строка найдена
Строка о незарегистрированной программе найдена. Теперь посмотрим в дизассемблере на код, в котором выполняется разветвление алгоритма на триальную ветку и зарегистрированную.
Code (Assembler) : Убрать нумерацию
- ...
- ; Вызвать функцию проверки регистрации
- .text:00401711 call sub_405040
- .text:00401716 jmp short loc_401719
- .text:00401716 ; ----------------------------------------------
- .text:00401718 db 0B8h ; Анти-дизассеблерный трюк
- .text:00401719 ; ----------------------------------------------
- .text:00401719 loc_401719:
- ; Если функция проверки вернула AL=0, то программа не зарегистрирована
- .text:00401719 or al, al
- .text:0040171B jz short loc_40171F
- .text:0040171D jmp short loc_401754
- .text:0040171F ; ----------------------------------------------
- .text:0040171F loc_40171F:
- .text:0040171F mov edi, offset aUnregistered
- ; "UNREGISTERED"
- .text:00401724 mov edx, offset Filename
- .text:00401729 or ecx, 0FFFFFFFFh
- .text:0040172C xor eax, eax
- .text:0040172E repne scasb
- .text:00401730 not ecx
- .text:00401732 sub edi, ecx
- .text:00401734 mov esi, edi
- .text:00401736 mov ebx, ecx
- .text:00401738 mov edi, edx
- .text:0040173A or ecx, 0FFFFFFFFh
- .text:0040173D xor eax, eax
- .text:0040173F repne scasb
- .text:00401741 add edi, 0FFFFFFFFh
- .text:00401744 mov ecx, ebx
- .text:00401746 shr ecx, 2
- .text:00401749 rep movsd
- .text:0040174B mov ecx, ebx
- .text:0040174D and ecx, 3
- .text:00401750 rep movsb
- .text:00401752 jmp short loc_4017BA
- .text:00401754 ; ----------------------------------------------
- .text:00401754 loc_401754:
- .text:00401754 mov edi, offset aRegisteredTo
- ; "Registered to "
- .text:00401759 mov edx, offset Filename
- .text:0040175E or ecx, 0FFFFFFFFh
- .text:00401761 xor eax, eax
- ...
Переходим к функции проверки регистрации по адресу 0405040. Там тоже все понятно, из реестра читаются значения ключей с именем и регистрационным номером, затем все это проверяется и возвращается результат. Проверку регистрации обойдем обычным патчем. Записываем пару команд MOV AL,1 и RET в начало функции, сохраняем изменения и APIS32 начинает прекрасно работать вообще без каких-либо регистрационных данных.
Программа успешно "зарегистрирована"
Сторонникам кейгенов и противникам "хирургических" методов это, конечно, не понравится. Но зато мы получили портативный инструмент, который можно хранить на флешке и использовать на любом компьютере без необходимости каждый раз вводить регистрационные данные. Правда, своего имени в окне программы мы тоже не увидим, но это совсем не страшно.
Просмотров: 8377 | Комментариев: 7
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
user
(30.07.2013 в 01:34):
Только хирургия. Только она.
Matsist
(20.04.2013 в 08:07):
В платности проги есть некоторая логика) Если пользователь шарит, то и сам сломает, а может и купить от щедрот)
Руслан
(20.04.2013 в 05:00):
Dependency Walker
ManHunter
(19.04.2013 в 17:15):
Да можно указатели "Registered to" переписать на нужную строчку и все будет красивее некуда. Про инлайн сразу не подумал, чуть попозже дополню статью.
Voffka
(19.04.2013 в 17:12):
На cracklab-e есть статья по ее лому(с красивым абаутом),доработке переноса строк и инлайну.
Rogin
(17.04.2013 в 23:04):
Спасибо за Ваш блог, очень познавательно.
Вася
(16.04.2013 в 20:30):
Да, старинная программка :)
И ломаная переломанная.
И ломаная переломанная.
Добавить комментарий
Заполните форму для добавления комментария