Как стать автором
Обновить

Основы работы с OllyDebug, на примере «лечения» архиватора

Сегодня покажу как можно с помощью «Ольки», «вылечить» один известный архиватор. Для этого нам понадобится: OllyDBG, плагин «CommandBar».

Ставим архиватор, через 40 дней некоторое время наблюдаем картину:



Первое что приходит в голову — изменить проверку на наличие лицензии или проверку на время использования программы. Пойдем по легкому пути — ищем WinAPI функцию которая получает настоящее время GetLocalTime. В контекстном меню выбираем
Search for -> Name (label) in current module.



Ищем функции связанные со временем, ах вот же она, чуть не пропустили.



Теперь необходимо поставить брейкпоинт на эту функцию. В окне плагина CommandBar вводим
bp GetLocalTime
и теперь при вызове этой функции наш отладчик остановится в нужном нам месте.



Запускаем отладку, клавиша F9. Наша точка останова успешно отработала и мы оказались в начале функции GetLocalTime, давайте дойдем до места выхода из этой функции (Ctr+F9), сделаем один шаг (F7). Вот мы видим, что после получения времени, вызывается функция по адресу 004B8C00, предлагаю зайти в неё и посмотреть что там может быть интересного, используем шаг с заходом (F7).

Видим благоприятные знаки.



Трассируем программу по F8, до проверки по адресу 004B8C26, наблюдаем TEST AL,AL.

Напоминаю, AL — является младшим регистром EAX, там у нас сейчас пусто. Команда TEST AL,AL проверяет, равен ли регистр AL нулю, если равен, то флаг ZF будет включен.Следующая команда JE SHORT 004B8C44, отправляет на с по адресу 004B8C44, в случае если ZF флаг включен. Что же, предлагаю убрать эту проверку с переходом. Нажимаем пробел и вводим nop, несколько раз нажимаем Assemble, пока не затрутся эти две команды.



Запускаем отладку (F9) и видим что опять остановились на нашем брейкпоинте, давайте уберем его (F2) и снова продолжим отладку (F9). Теперь видим что нам ничего не мешает работать и в поле о регистрации появилась надпись о там что программа зарегистрирована.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.