Недавно добавленные исходники

•  TDictionary Custom Sort  3 225

•  Fast Watermark Sources  2 990

•  3D Designer  4 750

•  Sik Screen Capture  3 259

•  Patch Maker  3 467

•  Айболит (remote control)  3 528

•  ListBox Drag & Drop  2 903

•  Доска для игры Реверси  80 771

•  Графические эффекты  3 843

•  Рисование по маске  3 171

•  Перетаскивание изображений  2 544

•  Canvas Drawing  2 672

•  Рисование Луны  2 500

•  Поворот изображения  2 091

•  Рисование стержней  2 119

•  Paint on Shape  1 524

•  Генератор кроссвордов  2 182

•  Головоломка Paletto  1 730

•  Теорема Монжа об окружностях  2 158

•  Пазл Numbrix  1 649

•  Заборы и коммивояжеры  2 016

•  Игра HIP  1 262

•  Игра Go (Го)  1 200

•  Симулятор лифта  1 422

•  Программа укладки плитки  1 177

•  Генератор лабиринта  1 512

•  Проверка числового ввода  1 297

•  HEX View  1 466

•  Физический маятник  1 322

•  Задача коммивояжера  1 357

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Время работы не ограничено - 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-сектора.





Похожие по теме исходники

Примеры работы с БД

График работы

Wallpaper Cam

iCalendar (календарь)

 

BA AdvCalendar




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте