
Исследование защиты программы WiFi Hopper

Скриншот программы WiFi Hopper
WiFi Hopper - очень толковый менеджер WiFi-сетей с возможностью переключения адаптера, автоматического выбора и переключения между беспроводными сетями и отображением графика сигнала. Неплохая замена стандартным виндовым инструментам по работе с WiFi. К сожалению, программа давно не обновляется, последней радостной новостью была поддержка Windows Vista, после этого разработка была прекращена. В программе используется неподписанный драйвер, так что даже на Windows 7 установить ее без бубнов проблематично, не говоря уже о более новых системах. Но для старых систем WiFi Hopper до сих пор остается актуальным. В пробном режиме некоторые функции отключены, а за полную версию требуется выложить денежку. За столько лет бездействия можно было бы сделать программу фриварной, но у автора другое мнение на этот счет. Впрочем, у нас тоже есть свое мнение.
Забираем с офсайта дистрибутив, устанавливаем. Если во время установки инсталлятор ругнется на несовместимую операционку и прекратит работу, то придется запустить его повторно, но предварительно установив режим совместимости на Windows Vista. А вот как решится вопрос с установкой неподписанного драйвера, тут я ничего сказать не могу. Моя Win7x86 ограничилась предупреждением, более старшие и 64-битные системы, скорее всего, вообще не дадут его установить. Если выбрать режим совместимости с Windows XP, то установится другая версия исполняемого файла, там методы лечения такие же, но адреса другие.

Окно регистрации
После запуска в заголовке программы сразу появляется надпись, что триал закончился. Але, гараж, я только что ее поставил первый раз. На попытку регистрации программа ломится на свой сервер с целью проверки имени и серийника. Нет уж, перебьется, будем искать другие методы. Исполняемый файл ничем не упакован, отправляем его на разбор в дизассемблер. Поиском по слову "trial" обнаруживается вот такой код:
Code (Assembler) : Убрать нумерацию
- ; Загрузить значение флага
- .text:004226BA mov eax, dword_46DEA0
- .text:004226BF dec eax
- .text:004226C0 jz short loc_4226F8
- .text:004226C2 dec eax
- .text:004226C3 jz short loc_4226D9
- .text:004226C5 dec eax
- .text:004226C6 lea ecx, [esi+2Ch]
- .text:004226C9 jz short loc_4226D2
- .text:004226CB push offset aUnknownProgram
- ; "Unknown program mode!"
- .text:004226D0 jmp short loc_422700
- .text:004226D2 ; ----------------------------------------------
- .text:004226D2 loc_4226D2:
- .text:004226D2 push offset aRegisteredVers
- ; "Registered Version"
- .text:004226D7 jmp short loc_422700
- .text:004226D9 ; ----------------------------------------------
- .text:004226D9 loc_4226D9:
- .text:004226D9 mov ecx, offset unk_46DEE8
- .text:004226DE call sub_4282E0
- .text:004226E3 push eax
- .text:004226E4 lea ecx, [esi+2Ch]
- .text:004226E7 push offset aTrialDaysRemai
- ; "Trial, days remaining: %d"
- .text:004226EC push ecx

Инициализация флага
Нужным нам значением флаг инициализируется только в одном месте, а где-то рядышком, судя по адресам, ему присваиваются и другие значения. Переходим по адресу инициализации. Если посмотреть целиком функцию по адресу 0042E560, то можно увидеть, что именно она отвечает за проверку валидности регистрационных данных. Тут и множественные сравнения строчек, и попавшая в немилость крякерская команда Team Lz0, и установка одного из трех значений флага. Проверка вызывается только из одного места, зато флаг регистрации затем используется во многих проверках. Чтобы не возиться с условными переходами, сразу же впечатываем в начало функции пару команд MOV dword [46DEA0],3 и RET. Теперь при любом раскладе будет установлено правильное значение. Сохраняем изменения, проверяем результат.

Программа успешно "зарегистрирована"
Все функциональные ограничения программы пропали, любые сообщения о триале и необходимости зарегистрироваться тоже, в окне "О программе" красуется типа лицензия и типа серийник. Цель достигнута.
Просмотров: 939 | Комментариев: 1
Метки: исследование защиты, сеть

Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье

Добавить комментарий
Заполните форму для добавления комментария

Как альтернативный вариант - 0x0002e012: 74 -> 7d
и программу можно регистрировать на любое имя (теперь уж точно красуется лицензия :)
P.S. Денежку выложить не получится, на оф.сайте статус Retired и купить нельзя (точно так же как и активировать без подправки одного байта).