www.POFIG.COM - форум пофигистов
Ща появлюсь!..
Загрузка...
Показать объявление
C возвращением!
Прежде, чем строчить на форуме многочисленные сообщения и открывать темы, очень рекомендуется ознакомится с правилами форума -> Правила
Если Вам не виден Порно раздел, то Вам сюда
Убедительная просьба! Перед созданием темы хорошо обдумать ее название! Старайтесь отразить в названии смысл темы. Темы аля "абырвалг", "народ, я далбайоб, памагите" будут беспощадно удаляться пофигаторами сайта! Угу;)
Пофигаторам, просьба отписать чего-нибудь путного в этой теме :)
За мульты (более одного аккаунта на форуме) - отныне выдается пожизненный бан обоих аккаунтов, и всех последующих, вплоть до бана по подсети; без дальнейшего восстановления заблокированных аккаунтов.Если у кого более одного аккаунта - не играйте с огнем.
Для Вас будет 2 конструктивных предложения для разрешения данной ситуации: Объединение Ваших аккаунтов либо удаление мультов.
Обращаться в ICQ к администрации или же на email.
Если же попадетесь просить о чем-то будет уже бессмысленно.
Скрыть объявление

Пофиг Кто на форуме Сообщения за день Награды Все разделы прочитаны
Вернуться   www.POFIG.COM - форум пофигистов > Андеграунд > Взлом
Регистрация СправкаПравила форума Пользователи Галерея Все разделы прочитаны


Взлом Взлом и всё что с этим связано.

Загрузка ...
Ответ
 
Опции темы Опции просмотра
Старый 05.04.2007, 02:35   #1 (permalink)
Начинающий пофигист
 
Аватар для Walinor
 
Активность Длительность
0/20 12/20
Сегодня Сообщений
0/11 sssssss64
Моё настроение:

Вы сказали Спасибо: 30
Поблагодарили 64 раз(а) в 27 сообщениях
Вес репутации: 4
Репутация: 15
По умолчанию Взлом платных программ..

Эта статья показывает каким образом можно взломать программы программы приложив минимум усилий и максиму отдачи.
Сразу оговорюсь, что таким образом ломаються далеко не все программы + вам придется познакомиться с ассемблером(не пугайтесь руководствуясь етой статьей можно понять необходимый миниму манипуляций с ним)

В статье описан взлом простенькой игрушки Net Sea War v4.00
И так...


Инструментарий.
Ни один взлом никогда не обходится без инструментов, по большому счёту мы даже банку консервов взломать без инструментов не в состоянии.
Но сегодня мы используем минимум инструментов, т.к защитой в программе даже не пахнет, но всё же, блокнотом нам её не одолеть.
Что нам понадобится:
Net Sea War 4 – Можно конечно обойтись и без него, но в таком случае, нам нечего будет ломать…Где взять – не знаю, зато подскажу где можно найти http://pofig.com через него можно найти практически любой софт.
HDasm – или любой другой дизассемблер. Мне больше по душе HDasm, чем, к примеру, Win32Dasm, но как бы то ни было, любую из этих программ, ты сможешь найти на просторах рунета.

Исследование.
Думаю, что ты уже в курсе, что взлом всегда начинается с исследования целевой программы. Поэтому, не будем отступать от традиций и начнём именно с исследования.
Итак, первый запуск. Нас попросят ввести имя, и в роли кого мы будем выступать в соединении (клиентом или сервером). Мы выбираем сервер. В строке состояния будет сказано, что мы можем подождать, пока к нам приконнектится клиент или можно нажать F2 для боя с компом. Жмём F2. Расставляем корабли, и мочим безжалостно бедного, тупого компа… уже размочили? Да? Ну, вот и славненько. Поиграв ещё некоторое время, мы обнаруживаем весёлое сообщение, о том, что нужно бы нам заплатить, чтобы поиграть.
Тут я намерен сделать некоторое отступление. Я полагаю, что если ты читаешь эту статью, ты относишься к группе тех людей, которые в жизни ни цента из своего кармана не отдали за софт (и не собираются). К этим людям отношу себя и я. Конечно, скажут некоторые, что это не справедливо по отношению к авторам, но я придерживаюсь мнения, что удел поэта – слава. Про юмористов из M$ молчу.
Может действительно, возьмём и заплатим, а? Хорошо, идём на офф сайт и платим... Ладно, шучу. Загружаем программу ещё раз. Жмём Registration->Register . и видим окошко для ввода серийника. Попробуйте ввести “fdsfsf”… ага, просит только integer(т.е число). Вводим “12345”. На что нам выпадает сообщение о неверном серийнике. Запоминаем этот текст (он нам ещё пригодиться).
Подведём итог: программа в качестве кода принимает только цифры. Ждёт некоторое время и только по прошествии, которого программа закрывается => срабатывает таймер.

Ломка. Метод №1 или выдернем серийник.
Открываем HDasm File->Open->”seawar.exe” Дизассемблируем в обычном режиме (Mode – Normal) выбранные сектора (Disassemble selected sections) тип файла PE и выбираем секцию .text
После дизассембляции мы получим ассемблерный код программы именно его нам, и придется исследовать. Спешу тебя обрадовать – это не надолго. Выбираем References->String References. И вводим там текст о неверном серийном коде(“Sorry, your personal registration code is uncorrect.”) Мы обнаруживаем, что такой текст найден, кликаем по нему дважды и оказываемся на следующем коде

00404E7F: 50 push eax
* String: "Sorry, your personal registration code is uncorrect."

00404E80: 680C024300 push 0043020C
00404E85: 8B4D90 mov ecx, [ebp-70]
00404E88: E8DC530100 call 0041A269

это означает, что call 0041A269 вызывает функцию показа сообщения. А push 0043020C кладёт в стек указатель на строчку о неверном серийнике.
Взглянем чуточку выше:

* String: "Thank You for support NetIntellGames shareware authors!"

00404E53: 68D4014300 push 004301D4
00404E58: 8B4D90 mov ecx, [ebp-70]
00404E5B: E809540100 call 0041A269 ;Вызов сообщения о верном сн
00404E60: EB2B jmp 00404E8D

* Jump:
00404E33(C) ;Сюда прыгают с адреса 00404E33

00404E62: 8B5590 mov edx, [ebp-70]
00404E65: C7828402000000000000 mov dword ptr [edx+00000284], 00000000
00404E6F: 6A10 push 00000010
00404E71: 8B4D90 mov ecx, [ebp-70]
00404E74: 81C17C020000 add ecx, 0000027C
00404E7A: E8C1C6FFFF call 00401540
00404E7F: 50 push eax

* String: "Sorry, your personal registration code is uncorrect."

00404E80: 680C024300 push 0043020C
00404E85: 8B4D90 mov ecx, [ebp-70]
00404E88: E8DC530100 call 0041A269 ;Вызов сообщения о неверном сн

Вы не заметили ничего странного? И я заметил. Точнее это даже не странность, а уже закономерность ламерских Шароварок.

* Jump:
00404E33(C) ;Кликните дважды по этому тексту в HDasm

00404E62: 8B5590 mov edx, [ebp-70]

Как мы видим на адрес, 00404E62 прыгают с адреса 00404E33. Кликнув дважды, мы видим:

00404E2B: E8AE0B0000 call 004059DE
00404E30: 83F801 cmp eax, 00000001
00404E33: 752D jne 00404E62 ;Если EAX не равен 01 прыгаем

Похоже, что данный код работает так: call 004059DE проверяет наш код, если он подходит, ставит в EAX 01. Кликаем дважды по call 004059DE. И видим следующее:

* Call:
00402804, 0040285B, 00404E2B

004059DE: 55 push ebp
004059DF: 8BEC mov ebp, esp
004059E1: 51 push ecx
004059E2: 894DFC mov [ebp-04], ecx
004059E5: 6A00 push 00000000

* String: "Reg"

004059E7: 6878034300 push 00430378

* String: "Names"

004059EC: 687C034300 push 0043037C
004059F1: E87ABEFFFF call 00401870
004059F6: 8BC8 mov ecx, eax
004059F8: E8ECDA0100 call 004234E9 ;похоже на функцию получения введённой нами строчки в HEX формате
004059FD: 3D336D454F cmp eax, 4F456D33 ;Оччччень интересно!
00405A02: 7507 jne 00405A0B

Дальше идущий код я обрезал, т. к в данной ситуации он для нас значения не имеет. Меня сильно заинтересовала команда cmp eax, 4F456D33. А знаете чем? А тем, что она сравнивает то, что находиться в eax с 4F456D33. Дело в том, что если бы эта команда выглядела так: cmp eax,DWORD ptr [4F456D33]. Она бы сравнивала двойное слово(4 байта), находящееся в памяти по адресу 4F456D33. А она сравнивает именно с ЧИСЛОМ 4F456D33. А вы помните, что программа принимает только числа в качестве серийника? В общем, не буду вас томить. Откройте калькулятор виндовс. Вид поставьте инженерный (мы же реверс инженеры) Нажмите F5 для перевода его в шестнадцатеричную систему счисления и введите 4F456D33. Затем нажмите F6 для преобразования числа в нашу любимую десятичную. Мы получили число 1329950003. А теперь введите это число в форму для ввода серийника. Ну, как? Мне тоже понравилось. Это только первый метод, которым мы сломаем эту прогу сегодня.
Вывод: серийник(1329950003) храниться прямо в коде в HEX виде.

Метод №2 или патч двух байтов.
Взглянем ещё раз на код:

00404E2B: E8AE0B0000 call 004059DE ;функция проверки серийника
00404E30: 83F801 cmp eax, 00000001
00404E33: 752D jne 00404E62 ;Если EAX не равен 01 прыгаем на сообщение о неверном серийнике

В данной ситуации нам нужно «занопить» jne 00404E62.
Занопить - значит заменить байты целевой инструкции на 90. В нашем случае целевая инструкция (jne 00404E62) занимает два байта (75 2D)=> на их место нужно поставить две инструкции NOP(две – потому, что инструкция NOP занимает один байт, а 75 2D – это два байта)
Инструкция NOP ничего не делает. Она, наверное, была создана специально для нас.
Сделать это можно с помощью HIEW. Открываем seawar.exe в HIEW. Жмём F4 и выбираем decode. Затем F5 и вбиваем адрес 4E33(это смещение относительно начала файла, вычислить его можно с помощью W32Dasm или HIEW(нажав ALT+F1), но иногда он похож на VA(виртуальный адрес, в нашем случае 404E33)) Мы видим следующую картину:

00404E33: 752D jne 00404E62
^^^^ нужно исправить на 9090
Исправив 752D на 9090, мы получим:
00404E33: 90 nop
00404E34: 90 nop

Теперь жмите F9. И запускаем прогу. Попробуйте ввести на этот раз в окне ввода серийника 123. Программа скажет вам большое спасибо и станет якобы зарегистрированной. Происходит это потому, что мы занопили условный переход => его НЕТ, и он выполняться не будет! Но если перезапустить или поиграть в неё подольше мы опять получим сообщение о том, что нужно заплатить. А это происходит потому, что мы изменили прыжок только на вводе серийника, а функция проверки серийника (которая вызывается перед сравнением eax с 01), до сих пор говорит, что он неверный. Взглянем на её полный вид:
* Call:
00402804, 0040285B, 00404E2B ;От суда мы видим, что функция вызывается с трёх адресов

004059DE: 55 push ebp
004059DF: 8BEC mov ebp, esp
004059E1: 51 push ecx
004059E2: 894DFC mov [ebp-04], ecx
004059E5: 6A00 push 00000000
* String: "Reg"
004059E7: 6878034300 push 00430378
* String: "Names"
004059EC: 687C034300 push 0043037C
004059F1: E87ABEFFFF call 00401870
004059F6: 8BC8 mov ecx, eax
004059F8: E8ECDA0100 call 004234E9
004059FD: 3D336D454F cmp eax, 4F456D33 ;Проверка
00405A02: 7507 jne 00405A0B ;Прыжок на обнуление eax, если не равны
00405A04: B801000000 mov eax, 00000001
00405A09: EB02 jmp 00405A0D ;Прыжок на финишную прямую
* Jump:
00405A02(C)
00405A0B: 33C0 xor eax, eax ;Обнуление eax
* Jump:
00405A09(U)
00405A0D: 8BE5 mov esp, ebp ;Финишная прямая
00405A0F: 5D pop ebp
00405A10: C3 ret ;Выход из функции

Как вы уже, наверное, догадались, мы будем колдовать над инструкцией jne 00405A0B. Правда, теперь у нас есть выбор:1)Мы можем занопить её как в предыдущем случае. 2) Мы можем изменить jne на противоположенную её инструкцию je
Jne выполняет прыжок если код неверный (FZ = 0), а je наоборот, если он верен (FZ = 1)
У первого метода преимущество в том, что не будет разницы, подошел серийник или нет, в любом случае функция «скажет», что серийник подошел. А при использовании второго метода, функция на правильный серийник будет реагировать отрицательно, зато на все не правильные наоборот – положительно.
1) Думаю не обязательно повторно объяснять все действия, которые необходимо совершить, просто, если забыли – руководствуйтесь тем, что я написал выше, только вместо 4E33 читайте 5A02
2) Здесь всё также просто, даже ещё проще, нужно изменить всего лишь второй полубайт байта 75 на 4. А если по-русски, то по адресу 5A02 нужно байты 7507 изменить на байты 7407 и всё! Дело в том, что опкод jne- 75XX, а опкод je-74XX, где XX-адрес.

Добавлено через 2 минуты 9 секунд
Статья не моя!!!
Но способ проверенный лично мной так ,что вопросы можете задавать мне...постараюсь ответить на все...

Последний раз редактировалось eros, 05.04.2007 в 17:11. Причина: Добавлено сообщение
Walinor вне форума   Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Walinor за это полезное сообщение:
alexx6908 (15.04.2007), Termit72 (13.05.2007), Аполло (09.04.2007), _Nova (05.04.2007)
Старый 05.04.2007, 11:21   #2 (permalink)
Художник пофигатор
 
Аватар для ARTSLASHMAIN
 
Активность Длительность
9/20 12/20
Сегодня Сообщений
4/11 sssss6163
Адрес: Питер

Вы сказали Спасибо: 2,401
Поблагодарили 5,074 раз(а) в 2,344 сообщениях
Вес репутации: 22
Репутация: 1277
Thumbs up Re: Взлом платных программ..

Цитата:
Сообщение от Walinor Посмотреть сообщение
В статье описан взлом простенькой игрушки Net Sea War v4.00
И так...
А покороче нельзя ...
__________________


ARTSLASHMAIN вне форума   Ответить с цитированием
Старый 05.04.2007, 17:46   #3 (permalink)
Начинающий пофигист
 
Аватар для Walinor
 
Активность Длительность
0/20 12/20
Сегодня Сообщений
0/11 sssssss64
Моё настроение:

Вы сказали Спасибо: 30
Поблагодарили 64 раз(а) в 27 сообщениях
Вес репутации: 4
Репутация: 15
По умолчанию Re: Взлом платных программ..

Цитата:
Сообщение от ARTSLASHMAIN Посмотреть сообщение
А покороче нельзя ...
Это не тот случай когда "краткость сестра таланта")
Walinor вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо Walinor за это полезное сообщение:
ARTSLASHMAIN (05.04.2007)
Старый 05.04.2007, 21:33   #4 (permalink)
Художник пофигатор
 
Аватар для ARTSLASHMAIN
 
Активность Длительность
9/20 12/20
Сегодня Сообщений
4/11 sssss6163
Адрес: Питер

Вы сказали Спасибо: 2,401
Поблагодарили 5,074 раз(а) в 2,344 сообщениях
Вес репутации: 22
Репутация: 1277
Thumbs up Re: Взлом платных программ..

Цитата:
Сообщение от Walinor Посмотреть сообщение
Это не тот случай когда "краткость сестра таланта")
Не говори, тока читать не охота, как нить в свободное времечко зайду и буду зубрить...
__________________


ARTSLASHMAIN вне форума   Ответить с цитированием
Старый 15.04.2007, 13:00   #5 (permalink)
Пофигист
 
Аватар для anarhist
 
Активность Длительность
0/20 14/20
Сегодня Сообщений
0/11 ssssss224
Адрес: Одесса

Вы сказали Спасибо: 407
Поблагодарили 340 раз(а) в 99 сообщениях
Вес репутации: 0
Репутация: 8
По умолчанию Re: Взлом платных программ..

а если прога кроме серийника ещё и имя требует?
__________________
ПАНКИ ХОЙ!
anarhist вне форума   Ответить с цитированием
Старый 15.04.2007, 14:10   #6 (permalink)
Художник пофигатор
 
Аватар для ARTSLASHMAIN
 
Активность Длительность
9/20 12/20
Сегодня Сообщений
4/11 sssss6163
Адрес: Питер

Вы сказали Спасибо: 2,401
Поблагодарили 5,074 раз(а) в 2,344 сообщениях
Вес репутации: 22
Репутация: 1277
Thumbs up Re: Взлом платных программ..

Цитата:
Сообщение от anarhist Посмотреть сообщение
а если прога кроме серийника ещё и имя требует?

Скорей всего имя произвольное
__________________


ARTSLASHMAIN вне форума   Ответить с цитированием
Старый 15.04.2007, 15:13   #7 (permalink)
Начинающий пофигист
 
Активность Длительность
1/20 12/20
Сегодня Сообщений
0/11 sssssss15

Вы сказали Спасибо: 14
Поблагодарили 2 раз(а) в 2 сообщениях
Вес репутации: 0
Репутация: 0
По умолчанию Re: Взлом платных программ..

Есть желание поломать некоторые проги ,думаю воспользуюсь советом
alexx6908 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взлом компа через инет.. Walinor Взлом 21 09.09.2007 12:52
Взлом архива Sous Варезник 12 14.05.2007 18:14
Взлом ..... конечно ж аськи FAQ MagAssist Взлом 2 16.04.2007 00:09
Ni Anti Shareware 3.0 (продлить триал платных программ) ARTSLASHMAIN Варезник 3 13.04.2007 12:33
Хакерский тест, Попробуйте пройти sng Базар 37 11.02.2007 13:14


Часовой пояс GMT +3, время: 19:27.




Яндекс цитирования Russian America Top. Рейтинг ресурсов Русской Америки.

Контакты с администрацией:
E-Mail: admin(sobaka)pofig.com; ICQ: 257-243-429
E-Mail: Buka(sobaka)i.ua; ICQ: 309-634-396
E-Mail: MagAssist(sobaka)gmail.com; ICQ: 192-225-828

vBulletin® Version 3.6.8.
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Перевод: zCarot
Мы не знаем, все ли права защищены. Нам просто на это пофиг.



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200