НОВОСТИ
Закончено опубликование всех проектов за 2009 и начало 2010 года. Маленький юбилей - общее количество проектов "перешагнуло" 90. Хотя каждый проект уникален в своем решении, качестве и подходе. И рассматривать "массу", не очень верный путь.
архив новостей
02.04.2010
СТАТЬИ - Взлом WinRAR (15.06.2007)

Взлом WinRAR

За что я уважаю разработчика WinRAR – так это за тот пример, который он подает разработчикам shareware-программ. WinRAR не защищена никакими антиотладочными приемами, и прочим. Единственная функция, которая доступна зарегистрированными пользователям – это электронная подпись, взлом которой практически невозможен. Да, мы в общем и не будем стремиться к ее взлому. Многие при взломе этой программы стараются сделать так, чтобы чтобы программа считала себя зарегистрированной. Понятно, что в случае, если пропатчить программу таким образом, чтобы она считала себя зарегистрированной, придется копаться в ресурсной секции и удалять флажок с «Добавить электронную подпись», так как в противном случае программа формирует некорректную электронную подпись. С другой стороны, единственное что мешает нам работать с программой – это то, что через 1–2 секунды выскакивает окно с сообщением, что нужно бы зарегистрироваться. Это-то мы и поправим. В качестве отладчика я использовал OllyDbg. Итак, что же у нас происходит? Появляется диалоговое окно, естественно, это похоже на вызов API функции DialogBoxParamA. Ставим брейкпоинт на DialogBoxParamA, после чего, в отладчике даем команду на выполнение до возврата из функции. После возврата из функции определяем, что вызов этой функции осуществляется по адресу 0043F818. Пробираясь выше, определяем, что это обработка оконного сообщения WM_TIMER.Ниже приведен листинг
В приведенном выше участке кода выполняется проверка, зарегистрирована программа или нет, и если да (т.е. двойное слово по адресу 4c7704 не равно нулю, то есть, программа зарегистрирована – пропускаем следующий фрагмент, иначе, выполняем следующий фрагмент, который содержит вызов диалогвого окна. Попробуем пропатчить эту инструкцию, таким образом, чтобы нижеследующий фрагмент никогда не выполнялся. Для этого сделаем переход безусловным, произведя следующую замену:
После этого код будет выглядеть вот таким образом
Все получилось, окно напоминания теперь не выходит. 

Настоящая статья предоставлена в ознакомительных целях и ответственность за использование ее в незаконных целях ложится на ваши плечи



Лев Трубач (leotr),
trubachlev@mail.ru,
icq: 348980438,
web: www.leotr.org


Республика Казахстан, г. Арыс.


размещение, распространение,копирование данной статьи без ведомаавтора - запрещена

© Разработка ТОО "LiO Programs" 1999-2010
1-1 1-2
2-1
тел: +7 7252 558115
сот: +7 701 3528510, +7 700 4503956
web: www.lio.kz, www.hlp.kz
email: lio@lio.kz