Хакерами не рождаются!
Ну
что, приятель, задвинул на слабые попытки хакнуть банкомат соседского
сбербанка? А зря! Ты что, думал, так всё сразу получится, подойдешь к
нему с молотком и зубилом, и он тебе сразу все бабки выложит на
блюдечке с голубой каемочкой? Ни фига! Хаку надо учиться, это
искусство, это как на скейтборде кататься: вроде на доске, в принципе,
любой стоять умеет, а вот с крыши прыгнуть на четыре колеса и шею не
сломать - это децил сложнее. Поэтому готовься - если ты ещё не крутой
хацкер, но очень хочешь им быть, мне есть что тебе рассказать. Но
начну-то я, естественно, с азов - не со взлома банкоматов, а, к
примеру, с обзора несложных, но настоящих софтверных инструментов,
которыми пользуются хакеры и кракеры, чтобы юзать просроченные
`шаровары` (shareware) или под шумок утянутую из приватных каталогов
известной фирмы утилитку. Главное, начать, как любил говаривать Билли
Гейтс в начале своей карьеры.
Во-первых, любому хакеру или тому,
кто хочет им стать, надобно знать ассемблер. Со знанием одного
бейсика-васика и второго трубопоскакаля далеко не уедешь, ведь
рассматривать содержимое программ, исследовать их приходится
преимущественно в совершенно `сыром` виде - машинных кодах и
ассемблере. Есть у меня один знакомый, так тот вообще может
декодировать команды из набора байтов в файле прямо в уме. Тут главное
- немного терпения. Опыт придет со временем, и все будет на все сто. А
то и на двести.
Вспомогательные утилиты
Итак,
инструменты. Конечно, в первую очередь это программы, позволяющие
определить, что именно перед тобой - картинка с длинными ногами и
большими сиськами или запакованный ехе-файл. Некоторые детекторы
позволяют определить тип файла, если он был запакован (отдельную статью
о паковке exe-файлов смотри в следующих номерах журнала). И даже -
попытаться снять защиту. Рекомендую ExeInfo by Adam Lojewski - весьма
полезная вещь для анализа исполняемых файлов. Для удобства ее интерфейс
пропатчили (спасибо STI) на предмет русских названий меню и надписей -
от этого она только увеличила свою привлекательность для новичков и
тех, кто ею пользовался до этого. Отвлекусь на пару слов, отхлебну
пивка и скажу про Compare2Unlimited by Professor Nimnull. После того
как дело сделано и в программу внесены изменения, неплохо бывает
получить список измененных байтов. Выписывать вручную - слишком
утомительно, и наверное, поэтому существует большое количество программ
для автоматизации этой процедуры. Но C2U - одна из лучших. А для
создания *.xck файлов хочется отметить XCKMaker 2.0 by Spider.
Hex-редакторы
Одним
из основных инструментов кул хацкера (сразу после пива) является
hex-редактор. Обычно, такая прога совмещает в себе возможности
просмотра-редактирования файлов в шестнадцатиричном/текстовом (ASCII)
формате и некоторые дополнительные фичи. Некоторые особо навороченные
позволяют декодировать байты файла в инструкции ассемблера и даже
писать на ассемблере и менять инструкции, что называется, не отходя от
кассы. Здесь можно отметить, пожалуй, только две программы, сохраняющие
популярность в течение уже ооочень большого периода времени. Программы
хорошие и, что немаловажно в совдепии, бесплатные. Хотя, как говорится,
для хакера из Багдада нет преграды... Но что-то же должно быть
бесплатным! `Не все нужно ломать, надо же на чем-то и сидеть`, - как
сказал один мой знакомый. Одна из программ называется Hacker`s View
(HIEW) by SEИ.
Несмотря на кажущуюся простоту HIEW, я уже не мыслю
работы на своём замечательном пивзаводе без неё. Кроме того что она
сама управляет пивоваренными котлами и подвальными холодильниками, она
имеет полнофункциональную поддержку pe/ne и кучи других форматов файлов
и такие очень удобные фичи, как поиск инструкции по маске (например,
хочу я найти присвоения регистру AX, тогда указываю: mov ax,? - и все -
дело в шляпе. Будут найдены и mov ax,1, и mov ax,dx и т.д.). Все это
позволяет мне сказать, что это лучший редактор. Как его (да и остальной
софт, о котором я рассказываю) использовать, я буду говорить
непосредственно перед тем, как буду этот софт юзать. Второй
HEX-редактор - QView by ABC Product. Внешне - смотрится гораздо лучше,
чем HIEW. Но вот с содержанием до HIEW ему далеко, хотя новые версии
наверняка восполнят этот пробел. Хотя, вообще-то, редактор не
обязательно должен быть красивым, как унитаз - скорее, простым, и
практичным, как туалетная бумага.
Отладчики
Третий тип
инструментов взлома - нет, не фомки и не лом. Отладчики. Наверняка все,
кто хоть как-то знаком с хаком (хотя бы и понаслышке), знают об их
существовании и о том, как сильно они помогают кракерам в их тяжелой
работе. Они есть под все платформы и операционные системы. Изначально
они были призваны облегчить жизнь обычным кодерам-программистам. Но
потом стали появляться кодеры, которые использовали отладчики не только
на своих программах, но и на программах коллег по работе/учебе. Ведь
всегда интересно, что же там эти ламеры наваяли? А некоторые считают,
что гораздо круче поковыряться в уже откомпиленном ехе-шнике и сделать
такое у себя, подкрутив там и подправив здесь, чем корпеть над этим
самому. Хотя я с ними не согласен. Ладно - вернемся к нашим баранам, то
есть отладчикам. Самым известным `фирменным` отладчиком был и остается
Soft-Ice by NuMega Corp. Его реализации есть как для DOS, так и для
Windows 9x/NT. При этом он дружит практически со всеми extender`ами
вроде EMM386 и QEMM. Установить его, научиться пользоваться им и всеми
его крутыми фичами - немалый шаг к успеху в нашем скромном предприятии,
как сказал бы AtH. Очень мощное средство. Собственно говоря, именно его
я использую для взлома всех программ для Windows и почти всех для DOS.
Однако кроме него есть еще довольно много очень приятных в
использовании трасеров-дебагеров, как их называют некоторые кракеры.
Например, очень даже неплох DeGlucker. Сделан он ручками Gorokhov и...
после того, как они его бросили, им занялся CrazyMax. Правда, у него
есть некоторые минусы (например, необходимо загружать операционку без
extender`ов, потому что DG работает только в V86 режиме и ни в каком
другом), да и свежую версию, свободную от глюков, мы не дождемся -
авторы его бросили. Правда, перед окончательным `хэппи-эндом` проекта
CrazyMax выставил на всеобщее обозрение его сорцы (исходники, стало
быть). И есть надежда, что найдутся пиплы с большим количеством
свободного времени, ума и пивы - довести это дело до ума. Говоря о
дебагерах в приложении к хаку, я почти ничего не могу сказать о таких
вещах, как Turbo Debugger фирмы Borland и CodeView от `Мелкомягких
товарищей партии`. Эти отладчики помогут отладить базу данных для
родного предприятия в случае, если имеются исходники к ней, но никак не
помогут понять устройство какой-нибудь библиотеки хитрой программы с
клевым предложением `REGISTER!` в меню. Хотя я, например, использую
Turbo Debugger, чтобы отлаживать вирии. Еще не могу обойти вниманием
такой отладчик, как AXE-Hack. В отличие от DG (обладая более
расширенными свойствами и сервис-фичами), он позволяет работать прямо в
окне DOS под Windows и эмулирует (то есть дает программе подумать, что
он что-то делает, а на самом деле - филонит по страшному) часть команд
процессора, что иногда становится серьезным подспорьем в борьбе с
какой-нибудь супер-пупер заSHITой. Вообще, не фирменных дебагеров
довольно много. Но рассказывать обо всех не имеет смысла. Для хака
вполне хватит и тех, о которых я уже рассказал.
Дизассемблеры
В
некоторых случаях одними отладчиками не обойтись. И тогда на арену
выходят дизассемблеры. Но и здесь есть свои подводные камни. Такие
дизассемблеры, как Sourcer, например, просто декодируют команды и
выискивают ссылки на уже определенные участки кода. Немного
изобретательности - и Sourcer выдаст на-гора километры ненужных
file.lst, содержащих полностью перечисленные байты файла, но ни строчки
по существу. И все - больше он практически ни на что не способен. Зато
с его помощью можно получить вполне приятный дамп BIOS. А ещё
компактом, на котором этот дизазм записан, можно в кого-нибудь кинуть.
Иными словами, ему применение почти всегда найдется.
Другое дело
(в хорошем смысле этого слова) IDA - Interactive Disassembler by Ilfak
Guilfanov. Автор этого чудесного дизассемблера сделал упор на работу,
прежде всего на взаимодействие с пользователем (или, по-нашему,
хакером). IDA не выдает текстовый файлик мегабайт этак на 20, в отличие
от Sourcer`а.
Нет - IDA есть приятное междумордие (interface)
для юзверя и позволяет просматривать и помечать просмотренные участки
кода именами/кличками, чтобы их потом можно было легко найти. Плюс
возможность писать комментарии везде, где только это радует глаз! И
возможность писать свои процедуры анализа на встроенном макроязыке!
Такой подход позволяет исследователю восполнить все пробелы `тупой
железячки`. И это далеко не все возможности. Дело в том, что IDA
поставляется вместе с набором специальных плагинов - для
автоматического распознавания. Например, есть программа, написанная на
Borland C++ 5.0. Если IDA определит (а она определит, то есть не если -
когда), что эта прога скомпилена именно на BC, он подгрузит
соответствующий плагин и сможет распознать и обозначать стандартные
функции (например, exit и biosdisk на экране будут не просто асмовым
листингом, а именно exit и biosdisk), что уменьшает время, необходимое
для поиска `лишнего` кода. В общем, IDA намного опередила всех своих
коллег по жанру. Очень рекомендую.
INT-Мониторы
INT-Монитор -
программа для отслеживания и записи всех (или только указанных)
прерываний, вызываемых подопытной программой. Для DOS это -
INTController и INTIndicator by Maxim Chirkov. Это небольшие резиденты,
которые висят на нужных прерываниях и следят за частотой их вызова. А
для win32 существует прекрасная вещь - APISPY32 by Yariv Kaplan.
Правда, чтобы `шпиён` ловил вызовы какой-нибудь апишной функции, ему
необходимо в специальном файле прописать имя этой функции и тип ее
аргументов - несколько утомительно, и если используются функции из
собственных библиотек, поставляемых вместе с программой, - ничего уже
не сделаешь. Но это единственный известный мне вариант подобной утилиты
под win32. Пригодится.
Унпакеры-распаковщики (unpackers)
Предназначены
для снятия так называемых `навесных` защит. Например, есть уже готовая
программа, и лень лезть и встраивать защиту. Или хочется, чтобы она
занимала меньше места на диске. Тогда берется программа пакер-паковщик
(packer), и `натравливается` на бедный
ехе-шник. Паковщик
упаковывает код проги и пишет свой распаковщик в начало, а потом
дописывает все остальное в конец. Когда программа вызывается, то
сначала отработает распаковщик, затем уже будет выполняться
запакованная программа. В результате, такую программу невозможно
пропатчить, не распаковывая, так как нужные байты, как правило,
запакованы-шифрованы, и найти их не удается. Но можно распаковать весь
файл и исследовать/патчить его отдельно. А потом при желании запаковать
(тем же или другим паковщиком - для экономии availspace на hdd). Для
тех, кто на бронепоезде - именно этим (распаковкой) и занимаются
унпакеры. Существуют унпакеры как универсальные (CUP386[DOS],
ProcDump[WIN] - лучшие из них, на мой взгляд), так и `заточенные` под
конкретный паковщик. Из вторых могу посоветовать Universal Unpacker
Package by Predator 666 - сборник унпакеров для самых популярных
пакеров + универсальный унпакер. Из первых - все же лучше CUP386;
единственное, что придется делать самому - так это мучительно
вспоминать, `куда же он делся? после вчерашнего...`, а остальное он
сделает сам (если найдешь, конечно). Для Win32 лидером пока что
остается ProcDump. Это по совместительству унпакер и дампер. Есть
хорошие фичи, вроде примитивных скриптов, на которых можно описать
принцип действий унпакера для конкретного паковщика.
Вродетогопослесловиеиливродетого
Вот
такое вот оно - хакерское дело. И софта в нем занято немерено, и юзать
его ещё научиться надо. Но ты - ты научишься обязательно. Как
говорится, у страха глаза велики, зато енг маленький. Только начнешь -
всё получится и всё будет в порядке. Ах да! Где софт взять? Чуть ни
забыл. Почти все, о чем здесь шла речь, можно слить (или найти ссылку,
а потом слить) с http://i.am/wwh, http://dore.on.ru,
http://www.idapro.com, www.internals.com.
Ну всё, дерзай, а то пиво стынет. Удачи. Как знать, может ты - потенциальный избранный? Время покажет.