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}