Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Михаил_Флёнов_Компьютер_глазами_хакера.pdf
Скачиваний:
16
Добавлен:
19.04.2024
Размер:
6.23 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

162P

 

 

 

 

 

i

 

 

 

 

 

 

r

D

 

 

 

 

 

 

 

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

BUY

 

 

w

Click

to

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

P

 

 

 

 

 

 

 

 

i

 

D

 

Глава 4

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

BUY

 

 

 

w Click

to

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

o

 

 

.

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.24. Окно программы File Monitor

Напоследок хочу обратить ваше внимание, что запись счетчика может происходить не только при старте, но и при выходе из программы. Счетчики дат вообще могут не изменяться, но их тоже можно попытаться вычислить.

Я показал пример с использованием старых утилит, сейчас же RegMon и FileMon удалены с сайта. Они были объединены в одну большую утилиту Process Monitor. Эта программа может следить сразу за всем — изменениями в файлах и реестре одновременно.

4.10.4. Полный взлом

Если вы хотите избавиться от всех предупреждений о регистрации, создав видимость, что вы это сделали, и получить все возможности программы, тут уже без дизассемблера, ассемблера и машинных кодов не обойтись.

Дизассемблер — программа, превращающая машинные коды в более удобный вид (язык ассемблера). Для понимания команд ассемблера нужно уметь программировать, но для взлома простой защиты можно обойтись и без этого.

Мы не будем углубляться и рассмотрим только основные моменты, но этого будет достаточно для опытного программиста, чтобы проникнуть в программы достаточно большой сложности. А если вы являетесь пользователем, то сможете преодолеть простейшую защиту, и ничего более.

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

СоветыP

 

i

 

 

хакера

D

 

 

 

 

 

 

 

r

 

 

 

 

 

NOW!

o

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

 

 

 

wИтак, для работы нам понадобятся следующие инструменты:

w Click

 

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

o

— желательно не ниже версии 8.9;

.

W32Dasm-xcha

 

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

P

 

 

 

 

 

 

 

 

 

i

 

D

 

 

 

 

 

163

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

Turbo Debugger от фирмы Borland — идет со средами разработки. Лучше всего использовать DOS-вариант, который поставляется со старыми языками программирования этой фирмы типа Borland C++ 5.02;

DiskEditor — можно любой вариант, но я люблю от "дяди Нортона". Утилиты этой фирмы сейчас принадлежат компании Symantec (http://www.symantec.ru/).

Меньше слов, больше дела. Запустите программу W32Dasm. Выберите из меню

Disassembler (Дизассемблер) пункт Open file to Disassemble (Открыть файл для дизассемблирования). Откройте необходимый ехе-файл. Я опять возьму ту же программу, что и в разд. 4.10.3. Во время загрузки происходит превращение машинных команд в язык ассемблера, и на экране появляется код программы, который может прочитать только программист.

Теперь переходим к самому взлому. Для начала нужно попробовать найти коды. Для этого выберите меню Search | Find Text. Введите слово Regist и запустите поиск. Когда подобный контекст будет найден, просмотрите список результатов. Если не видите ничего интересного, то продолжайте поиск. Вы должны обнаружить текст, связанный с регистрацией, например, сообщение об удачно введенном коде.

Посмотрите на рис. 4.25, на котором показан снимок результата моего поиска. W32Dasm нашел текст "Enter registration code". Я думаю, это то, что надо. Про-

граммисты, знающие язык ассемблера, могут просмотреть команды. Если с этим у вас проблемы, то исследуйте строки, начинающиеся с символа * (звездочка).

Итак, начинаем по программе отыскивать такие звездочки. Следующая строка абсолютно ничего не говорит. Опускаясь еще ниже, можно увидеть текст:

* Possible StringData Ref from Code Obj ->"EGCD1"

Даже не зная программирования, можно догадаться, что введенный код будет сравниваться с "EGCD1". Это логично, потому что мы сначала нашли сообщение "Введите регистрационный код", и тут же группа непонятных символов. Что мешает проверить эту строку, как регистрационный код?

Ну а если вы знаете программирование, то по коду сможете узнать, что первые 5 символов введенного ключа должны быть "EGCD1", а остальные могут быть любыми.

Это идеальный вариант, когда происходит простое сравнение. Хуже, когда используется математика, тогда уже нужен большой опыт. Но давайте посмотрим немного дальше. Вы найдете следующие строки "Software", "Desktop" и "ProductID". Мне это напоминает ключи реестра, с которыми мы уже встречались при мониторинге с помощью программы Regmon: Software\Desktop — путь в реестре, а ProductID — строковый параметр. Почему строковый? Да потому, что еще ниже я нашел комбинацию символов "sdjFE2fih3erj3J". Это значит, что если такая строка есть в реестре, то программа считается зарегистрированной. Вот так. Даже если для проверки кода используется математика, вы сможете ее обойти, отыскав что-нибудь подобное.

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

164P

 

 

 

 

 

i

 

 

 

 

 

 

 

r

D

 

 

 

 

 

 

 

 

 

 

 

 

NOW!

o

 

 

 

 

BUY

 

 

 

w Click

to

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

P

 

 

 

 

 

 

 

 

i

 

 

D

 

Глава 4

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

BUY

 

 

 

w Click

to

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

Рис. 4.25. Окно программы W32Dasm

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

4.10.5. Сложный взлом

Если вы ничего не нашли, то тут уже без средств отладки не обойтись. Придется запускать Turbo Debugger (или другую программу, но мне нравится именно эта) и искать регистрацию, отлаживая программу.

Я не буду тут вдаваться в подробности, а дам пару советов для программистов:

Попробуйте поискать все вызовы функций MessageBoxA. Чаще всего рядом с программным кодом регистрации будет хотя бы один вызов этой функции, в основном, для сообщения об удачном завершении процесса.

Ищите последовательность кодов выхода из программы. Посмотрите, откуда они вызываются. Если программа выработала свой ресурс, то она не запустится, а значит, где-то должен быть принудительный вызов закрытия. Когда найдете, поднимитесь немного выше и поищите команду перехода. Она обязательно

должна быть, потому что всегда используется алгоритм типа "Если программа не зарегистрирована, то перейти на выход, иначе работать дальше". Ваша зада-

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

 

 

-

 

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

 

t

 

 

 

 

F

 

 

 

 

 

 

 

 

 

t

 

 

СоветыP

 

i

 

 

 

P

 

 

 

 

 

 

 

 

 

 

 

i

 

 

хакера

 

 

D

 

 

 

 

 

 

165

 

D

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

NOW!

o

w

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ча — заменить условный переход на безусловный (

) по адресу продолжения

w Click

to

 

 

 

 

 

 

 

 

jmp

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

программы.

 

w Click

 

 

 

 

 

 

 

 

m

 

w

 

 

fвыполнения-xcha

 

 

w

 

 

f-x cha

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

g

.c

 

 

 

 

.

 

 

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

d

 

 

 

n

e

 

 

 

 

 

 

d

 

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Контроль регистрации может быть сколь угодно сложным, но практически всегда он заканчивается простой проверкой типа "если регистрация прошла успешно, то продолжить выполнение, иначе — выйти".

Около 10 лет назад я купил игру. Регистрационный код, который был на коробке, почему-то не подошел, а дело было вечером, и в службу поддержки звонить поздно. Поиграть очень хотелось, поэтому, недолго думая, я запустил отладчик. Проглядев код, который проверял регистрацию, я ничего не понял. Ассемблер я тогда знал на уровне основных команд и понять алгоритм проверки не смог. Просмотрев код дальше, я увидел заветную проверку cmp и условный переход на продолжение игры. Задача состояла в том, чтобы заменить условный переход на безусловный. На это понадобилось пять минут.

Таким образом, я взломал свою первую и единственную программу, хотя и заплатил за нее положенные деньги. На следующий день я узнал, как регистрировать игру, но несмотря на это пользовался измененным исполняемым файлом, потому что не хотелось каждый раз вводить ключ. Я заплатил деньги не для того, чтобы мучиться с кодами, а чтобы спокойно играть.

Хочу обратить ваше внимание, что я не старался научить вас взламывать все подряд и не призываю к этому. Если вы пользуетесь плодами чужого труда, значит, он стоит того, чтобы за него заплатить. Некоторые жалуются на очень высокие цены на программное обеспечение. Если вас что-то не устраивает, всегда есть альтернатива. На данный момент очень много свободных и дешевых программ. Воспользуйтесь тем, что вам по карману, но не взламывайте. Цель данной главы — только показать, как взламываются программы, но применять это в корыстных целях незаконно.

Несколько лет назад я решил отказаться от нелегального софта на собственном компьютере. И вы знаете, я это сделал без проблем. Нужно было только удалить все, чем я не пользуюсь. Из оставшегося я убрал все, что дорого для моего кармана, и нашел этому бесплатную альтернативу. Все, на что хватает денег, я купил и теперь сплю спокойно. У меня в компьютере сейчас осталась только одна платная и дорогая программа, которой не нашлось альтернативы, но скоро накоплю денег и буду пользоваться ею уже легально.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Г Л А В А 5

Интернет для хакера

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

В этой главе нам предстоит взглянуть на Интернет с точки зрения хакеров. Нет, мы не будем взламывать сайты и воровать информацию, потому что это темы отдельных книг. Про взлом сайтов можно прочитать, например, в книге "Web-сервер глазами хакера" [6]. А вот про воровство информации хорошо написано в Уголовном кодексе Российской Федерации :).

Мы же с вами законопослушные граждане. Вместо этого мы поговорим о безопасности домашнего компьютера. Основной упор будет сделан именно на этот способ организации трудового процесса. С серверами и корпоративными сетями дело обстоит сложнее, но все, о чем мы будем говорить, в равной степени применимо и к коллективной работе.

Кроме того, мы пополним свой багаж замечательными шутками, но уже с использованием Интернета, или просто поучимся, как сделать более комфортным свое пребывание в сети. Мы узнаем, как накручиваются системы голосования и обманываются системы регистрации.

Всю описываемую здесь информацию вы должны рассматривать с двух точек зрения: с целью использования и с целью защиты. Например, мы будем рассматривать, как организованы системы голосования на различных сайтах, и эту информацию можно использовать с целью увеличения голосов. Но если вы веб-программист, то эта информация будет полезна с точки зрения защиты и поможет написать такой скрипт для подсчета голосов, который нельзя (труднее) будет подтасовать.

Когда рассматриваешь систему безопасности, то эта же информация может быть использована для взлома. Например, вы рассказываете о новом замке, вскрыть который можно только бензопилой. С одной стороны, вы хвастаетесь надежной конструкцией, а с другой — даете вору информацию, какой инструмент использовать для проникновения. Любая информация о защите может быть воспринята и как побуждение к взлому, и как мера предосторожности. Я подразумеваю второе, потому что намного сложнее создать нечто неуязвимое, чем разрушить построенное (ломать — не строить). Да и мне интереснее защищать информацию, чем взламывать. Взломом интересуюсь для того, чтобы я знал, от чего я должен защищаться.