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

Российские хакеры взломали бортовой компьютер российского истребителя СУ-27. Теперь боекомплект самолёта пополняется автоматически и у летчика есть шанс выйти на следующий уровень.

Target: Crazy Cow

Tools:

  • Немного мозгов
  • Win32Dasm 8.93
  • Hex-редактор

Пролог

Вступление:

Побудила к взлому слезная прозьба моего друга Satan'a. Мол, чертов скринсавер перестал работать, помоги. Ну что ж не помочь, делать было не- чего и я взялся!

Что за прога:

Скринсавер бешеная корова. Минимальные системные требования: 486-60МГц, 8 Мб оперативки, Win9x.

Предупреждение:

Люди уже умеющие ломать: не читайте этот тьюториал, он предназначен для начинающих.

Начало

Первое, что стоит отметить везде написано, что это фривара и никакой регистрации не нужно?!!! А почему тогда пишет срок вышел? Инфы, что это бета-версия я тоже не нашел. Дизассемблируем файл Crazy Cow. scr и прис- тупим.

Взлом

Ищем в секции строк строку с надписью типа "expired", нашлась. Взлом обещает быть легким.

Смотрим этот участок кода


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00407343(C)
|
:004073DB 8B0D28F94000 mov ecx, dword ptr [0040F928]
:004073E1 83E101       and ecx, 00000001
:004073E4 85C9         test ecx, ecx
:004073E6 0F84B3000000 je 0040749F
...
:00407457 8945EC       mov dword ptr [ebp-14], eax
:0040745A 6A1D         push 0000001D

* Possible StringData Ref from Data Obj ->"Your screensaver has expired."
                        |
:0040745C 6870F94000   push 0040F970

Здесь видно, что все зависит от значения в 40F928. Посмотрим, где при- сваивают значение этой переменной. Для этого перемещаемся к началу текста, заходим в поиск и набираем 40F928 и вываливаемся здесь.


:004072AA 56             push esi
:004072AB E8B0EEFFFF     call 00406160
:004072B0 85C0           test eax, eax
:004072B2 0F85FD010000   jne 004074B5
:004072B8 833D3005410000 cmp dword ptr [00410530], 00000000
:004072BF 0F85F0010000   jne 004074B5
:004072C5 A128F94000     mov eax, dword ptr [0040F928]
:004072CA 83C001         add eax, 00000001
:004072CD A328F94000     mov dword ptr [0040F928], eax

Так, так, так меня интересует процедура по адресу 406160, ведь если в eax возвращается один, то процедура не выполняется. Заходим в процедуру


* Referenced by a CALL at Addresses:
|:0040646E   , :004066A9   , :004069E9   , :00406EBB   , :00406FF7
|:004072AB   , :00407782
|
:00406160 55             push ebp
:00406161 8BEC           mov ebp, esp
:00406163 833D90F8400000 cmp dword ptr [0040F890], 00000000
:0040616A 7419           je 00406185
:0040616C E8A3210000     call 00408314
:00406171 F7D8           neg eax
:00406173 1BC0           sbb eax, eax
:00406175 40             inc eax
:00406176 A3BC034100     mov dword ptr [004103BC], eax
:0040617B C70590F8400000000000  mov dword ptr [0040F890], 00000000

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040616A(C)
|
:00406185 A1BC034100     mov eax, dword ptr [004103BC]
:0040618A 5D             pop ebp
:0040618B C3             ret

Эта процедура вызывается из многих мест, возможно, что она основная, здесь и будем править. Выделенный переход, едиственное что может помешать, чтобы в eax была 1. Значит надо переход убрать или перенаправить, я пред- почел второе. Перенаправляем переход на 406171. Для этого высчитываем, что должно стоять вместо 19h, смотрите у процедуры длинна байт = 5, а эта строка сразу после процедуры. Значит вместо 19h будет 05h. Заходим в файл и исправляем по адресу 616B 19h на 05h. Все.

Послесловие

Товарищи программисты. Я так и не понял смысл этого временного огра- ничения, если кто знает прошу сообщить.

Господа начинающие крэкеры. Это программа проста для взлома, так что можете смело на ней тренироваться.

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

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

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

With best wishes Fess

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

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