Crazy Cow очень простой взлом
|
Российские хакеры взломали бортовой компьютер российского истребителя
СУ-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-сектора.
|