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

- Люблю горячие блины! - сказал программер, вытаскивая только что записанный диск из CD Writerа.

Target: Футбол чемпионат мира 2002

Tools:

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

Вступление

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

Дали мне тут гамес с привязкой и я решил его пощупать. Почему в топике я написал про SnowBall и 1C? На это есть две объективные причины. Первая, я уже играл в чемпионат мира 2002 от другой фирмы и гам был другой. Вторая, игры от 1С никогда не славились своей защитой, поэтому взлом будет простым.

Начало

В каталоге, я обнаружил 3 exe файла. Проведем эксперимент, в каком же из них содержится нужная нам функция GetDriveTypeA. Запускаем любой нормальный файл-менеджер (я юзаю DosNavigator или его клоны). Нажимаем Atl-F7 пишем искать в файлы *.exe, содержащие строку GetDriveTypeA. Нашелся один файл с названием PSC2002.exe.

Суем его в Win32Dasm и ждем. Затем переходим к месту вызова этой функции и оказываемся здесь.


:004877EC 55            push ebp

* Reference To: KERNEL32.GetDriveTypeA, Ord:0104h
                                  |
:004877ED FF1558C04B00  Call dword ptr [004BC058]
:004877F3 83F805        cmp eax, 00000005
:004877F6 0F85B7000000  jne 004878B3
.......
:0048780A 50            push eax
:0048780B 55            push ebp

* Reference To: KERNEL32.GetDiskFreeSpaceExA, Ord:0101h
                                  |
:0048780C FF1590C04B00  Call dword ptr [004BC090]
:00487812 85C0          test eax, eax
:00487814 0F8499000000  je 004878B3
.......
:004878D8 5D            pop ebp
:004878D9 B001          mov al, 01
:004878DB 5B            pop ebx
:004878DC 81C434020000  add esp, 00000234
:004878E2 C3            ret

Как видно из листинга, Здесь помимо стандартной проверки на CD-ROMность, применяется проверка на наличие свободного места на диске (без сомнения в фирмах работают "продвинутые" программеры). Можно, конечно, менять переходы после них. Но я сделал более удобный и быстрый вариант. Вы без сомнения заметили выделенную строку, которая возвращает результат проверки. Т.е. стоит нам в начале процедуры (которая начинается с 4877B0) написать mov al, 1; ret, то все проблемы увянут сами собой. Так и поступим, заходим в любой hex-редактор и начиная с 487B0 пишем такие байтики B0 01 C3. Которые являются hex-представлением этих команд и все в порядке.

Запускаем... все рулит. Итак мы рульные хацкеры поломали корявую защиту. Ура нам! Ура!

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

Удачи в Reversing Engeneering!

Послесловие

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

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

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

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

With best wishes Fess

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

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