Crazy Cow очень простой взлом

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

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

{/codecitation}

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