Футбол чемпионат мира 2002 от Snowball и 1C — Пример взлома CD

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Автор: 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-сектора.

{/codecitation}

Добавить комментарий