Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Исследование компонента Делфи VG Library II

Обсудить статью на форуме

Массу крэкерских инструментов, видеоуроков и статей вы сможете найти на видеокурсе от нашего сайта. Подробнее здесь.

Автор: Mega][ertZ <megahertz@e1.ru>

Объект исследования: VG Library II 2.70
Инструменты:
Borland Delphi 7
OllyDbg + Command Line plugin
Total Commander
HIEW

Ранее я встречал статьи по исследованию компонентов Delphi, но их смысл заключался в том, что можно эмулировать окно Delphi либо можно пропачить готовый екзешник, а это ни есть гуд.

Попал мне в руки VG Library II 2.70. Не буду про него много рассказывать, лучше сразу перейдем к делу.

Для начала, ставим компонент (я ставил на Delphi 7). Создаем новый проект, кидаем на форму какой либо компонент из VG Library (я использовал vg2Button). Запускаем, все нормально. Но после закрытия Delphi при запуске приложения может выскачить МессаджБокс с сообщением о триальности. Чтобы было меньше проблем, обойдемся без форм, в dpr файле (Project->View Source) пишем:

program Project1;
 uses vg2Buttons;
 var vg2Button: Tvg2Button;
 begin
 end.

Теперь грузим полученый екзешник в OllyDbg, ставим брейкпойнт на MessageBoxA (Alt+F1, bpx MessageBoxA). Запускаем приложение (F9). Сообщение от триальности выскакивает не каждый раз, поэтому может понадобиться несколько запусков. Когда брейкпойнт сработает, чуть выше распологается код:

0044C8A4  |.6A 00            PUSH 0                         ; /Title = NULL
 0044C8A6  |.68 30C94400      PUSH 0044C930                  ; |Class = "TAppBuilder"
 0044C8AB  |.E8 D099FBFF      CALL <JMP.&user32.FindWindowA> ; \FindWindowA
 0044C8B0  |.85C0             TEST EAX, EAX
 0044C8B2  |.75 54            JNZ SHORT 0044C908

Если окно класса TAppBuilder найдено, то переход по адресу 0044C908, те в обход Сообщения о триальности. Еще выше распологается код:

0044C88E  |.64:8920          MOV DWORD PTR FS:[EAX], ESP
 0044C891  |.832D D4FB4400 01 SUB DWORD PTR DS:[44FBD4], 1
 0044C898  |.73 6E            JNB SHORT 0044C908

Здесь видимо идет проверка, зарегистрирован компонент или нет. В HIEW исправляем условную проверку на безусловную: 736E на EB6E. Триальность снята!

Теперь займемся компонентом. Поблизости измененного нами участка нужно найти последовательность опкодов, в которой не используются адреса. Например можно взять начало функции:

0044C87C  /.55               PUSH EBP
 0044C87D  |.8BEC             MOV EBP, ESP
 0044C87F  |.6A 00            PUSH 0
 0044C881  |.6A 00            PUSH 0
 0044C883  |.33C0             XOR EAX, EAX
 0044C885  |.55               PUSH EBP

Наша последовательность будет такой 558BEC6A006A0033C055. Теперь нужно найти эту цепочку в dcu файлах компонента (в папке VGLib2\Delphi7\Lib). Для поиска я использовал Total Commander.
Эта цепочка найдена в файле vg2SysUtils.dcu. Открываем его HEX-редактором. Еще раз ищем цепочку. Проверка условия находится на 18 байт ниже, находим ее и изменяем 73 на EB. На этом процесс можно считать завершенным.

Обсуждение статьи: Исследование компонента Делфи VG Library II >>>


Комментарии к статье: Исследование компонента Делфи VG Library II

mysterio 06.07.2005 15:56:13
Довольно не плохо. Лучше искать не начало функции и потом отсчитывать эти 18 байт а лучше сразу найти последовательность 648920832DD4FB440001736E
и сделать из нее 648920832DD4FB440001EB6E.
Хотя у каждого свой метод. =)
---
slv 07.07.2005 12:20:28
есть ещё способы... поиск не только главного дельфи окна но и child\’ов...
---
HighHunter 08.07.2005 13:41:31
А использовать DeDe слабо? Да и без него есть дизасемблер для .dcu файлов. В общем, автор пошел окружным путем. ИМХО лучше и легче работать с .dcu.
---
Tim 10.07.2005 00:59:31
А я всегда так и делал. Только для компонентов C++Builder. Даже восстанавливал из урезанного компонента полный, путем анализа демо-файла этого компонента.

2 HighHunter:
Автор пошел нормальным путем, именно когда человек начинает привыкать ко всяким \"облегчалкам жизни\", он лишается главного - свободы мысли.

---
Tim 10.07.2005 01:02:04
Разумеется, это наше с автором IMHO, а то сразу посыпятся обвинения в пропаганде \"народного способа\"... ;)
---
HighHunter 11.07.2005 18:38:31
Никаких обвинений, любой метод имеет право на жизнь. Если кому-то так легче - все нормально. Я просто сказал, что есть специальные тулзы для компонентов.
Чем хорош Mega][ertZ - так это тем, что код можно анализировать в иде. И отладка работает.
Для такой простой защиты имхо без разницы, для сложной и запутанной - возможно его метод даже быстрее даст нужный результат.
---

Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS