Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Время работы не ограничено - Wallpaper Calendar 2.0.3
Автор: Fess

Bugs, life - программистские хроники.

Target: Wallpaper Calendar 2.0.3

Tools:

  • Some brains
  • Win32Dasm 8.93
  • Hex&Asm редактор (я использовал QView)

Все, кроме мозгов, можно найти на www.exetools.com

Вступление

Как это начиналось:

Выдался свободный час и я решил поисследовать какую-нибудь программу, а заодно (поскольку время оставалось) решил накатать и тьюториал.

Что за прога:

Какой-то календарь на рабочем столе. Честно говоря говно какое-то, мне такой даром не нужен, но для взлома сойдет. В архиве эта прога занимает 1,470,ххх и написана она на Delphi. Системные требования минимальные. Имеет ограничение в свободном использовании 30 дней и я попытаюсь этот недостаток исправить.

Начало

Достали из кобуры известный всем Win32Dasm и кинули в него прогу? Она распаковалась хорошо и мы понимаем, что она ничем не запакована.

Далее заходим в секцию строк и ищем, что-нибудь про evaluation или expired, в самом начале нашлась такая строка [FREE Evaluation period over], означающая, что типа все - приехали. Посмотрим что за код скрывается рядом, щелкаем два раза и видим...


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BA885(C)
|
* Possible StringData Ref from Code Obj ->"Wallpaper Calendar "
                           |
:004BA8CA 6808AE4B00   push 004BAE08
:004BA8CF 8D458C       lea eax, dword ptr [ebp-74]
:004BA8D2 E8A1DDFFFF   call 004B8678
:004BA8D7 FF758C       push [ebp-74]

* Possible StringData Ref from Code Obj ->" [FREE Evaluation period over]"
                          |
:004BA8DA 6854AE4B00   push 004BAE54

Все как обычно. Видно, что сюда делается прыжок с 004BA885, а следовательно надо идти туда и посмотреть, что за дела. И вот мы там...


:004BA86F DB6DA0         fld tbyte ptr [ebp-60]
:004BA872 DEE1           fsubrp st(1), st(0)
:004BA874 E83B83F4FF     call 00402BB4
:004BA879 A32C7C4C00     mov dword ptr [004C7C2C], eax
:004BA87E 833D2C7C4C0000 cmp dword ptr [004C7C2C], 00000000
:004BA885 7C43           jl 004BA8CA

Как отче наш видно, что счетчик дней заносится в 004C7C2C, а затем сравнивается с 0 если уже все, то переход. Eax считается в выделенной процедуре, значит надо сделать так, чтобы процедура всегда возвращала число больше 0.

Как это сделать? Все до невозможного просто, если вы уже сами догадались, то делайте сами - "Практика это лучший учитель". Для тех, кто продолжает читать скажу, что здесь всего-то надо сделать ret из процедуры, до процедуры eax всегда больше 0. Как догадался? на практике проверил, вообщем, делаем так: списываем строку кода, чтобы по ней можно было найти в файле нужное место, я взял E83B83F4FF. Теперь заходим в hex&asm редактор, переходим в 32-битный режим ассемблера. И начинаем искать эту строку в QViewе надо нажать F7 и ввести эту строку. И Enter.

Так строка нашлась на 0B9C74, хорошо в путных редакторах рядом с процедурой должна быть написана цифра. Держите Shift и нажмите эту цифру и вы перенесетесь в место с процедурой. Если у вас нету цифры рядом жмите F5 и набираете 1FB4 именно по такому адресу, находится нужная процедура. Теперь можете написать C3 или перейти в режим аsm-редактирования и ввести ret, это одно и тоже. Теперь сохраняйте изменения и запускайте программу. В верхней строке написано сколько вам ее пользовать у меня это число выходило за рамки 100000. И оно не будет убавляться, так что дерзайте и все будет круто.

Послесловие

Спасибо автору за предоставленный для исследования продукт.

Господа Авторы: защита фигня, если хотите, чтобы за прогу платили баблосы - делайте защиту лучше.

Все ругательства отправлять в null
Все остальное на lomovskih@yandex.ru

Спасибо за интерес к моему творчеству!

Удачи в Reversing Engeneering!

P.S. Запомните все материалы публикуются только в учебных целях и автор за их использование ответственности не несет!!

P.P.S. Возможно имеют место опечатки, заранее извините!

With best wishes Fess

И да пребудет с вами великий дух bad-сектора.

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay