Средства отладки и взлома программ
В настоящее время современные хакеры используют обширный
инструментарий. Его можно подразделить на следующие группы:
В свою очередь первые две группы опять разделяются на использующие стек отлаживаемой программы и неиспользующие его.
Отладчики реального режима
Наиболее известные:
- TurboDebugger by Borland International
Созданный в 1988 году двумя братьями Chris'ом и Rich'ем Williams
Содержит множество ошибок, активно используемых защитами, таких как:
- использование стека отлаживаемой программы
- использование int 1, int 3 для трассировки
- перехват прерываний int 0, int 1, int 3
- некорректная работа с видеобуфером
- некорректное выставление начальных значений регистров
API отсутствует.
Обладает чрезвычайно развитым оконным интерфейсом, предоставляет
возможности по просмотру кода и исходного текста программы,
шестнадцатеричного дампа, переменных (при наличии отладочной информации),
созданию макросов, отличается завидной медлительностью, связанной с
подкачкой оверлея.
- CodeView by Microsoft
По своим ошибкам ничем не отличается от TurboDebugger'a. Поддерживает
собственный формат отладочной информации. В силу устройства самого ядра
отладчика не приспособлен в качестве среды для взлома.
- AFD
Созданный в 1988 году H.Puttkamer'ом отладчик предоставляет следующие
возможности: пошаговый режим исполнения инструкций, пошаговое исполнение
подпрограмм, сохранение точек останова в пользовательском файле, поиск
данных в памяти, создание макросов и запись их в файл. Для использования в
качестве среды для взлома не предназначен.
- Debug
Одним из самых первых отладчиков, существовавших для IBM PC, является
отладчик DEBUG, поставляемых с операционной системой MsDos. Содержит все
ошибки отладчиков реального режима. В настоящее время нигде не используется.
На сегодняшний день отладчики реального режима не представляют интереса,
т.к. весь современный софт в реальном режиме не работает.
Отладчики защищенного режима
- TurboDebugger/386 by Borland International
Надстройка над TD, представляющая device-driver TDH386.Sys (низкоуровневый
интерфейс сопроцессором) и запускающую программу TD386, вводящую процессор в
режим V86. Полностью поддерживает ошибки своего предшественника.
Предоставляет возможность установки аппаратных точек останова: по обращению
на чтение/запись байта в памяти, перекрытие обращения к портам (не всегда
корректно обрабатываемое).
- Soft-Ice by Nu-Mega Techologies
Hаиболее мощный отладчик. Поддержка VCPI. Есть разновидности под Win95/WinNT
Содержит также некоторые ошибки:
- Hе является полностью stealth-отладчиком, так как оставляет кусок
своего кода в conventional memory V86 машины.
- Существует API между программой и отладчиком
- S-Ice можно обнаружить по устройству SOFTICE1
- Загрузчик LDR неправильно выставляет значение SP
- некорректное выставление начальных значений регистров
Предоставляет API через int 3, функции 09-13h. Поддерживает отладочную
информацию Microsoft ('NB' в начале отладочной информации), Borland (db
0FB52h)
- Soft-Ice/W by Nu-Mega Techologies
Отладчик под Windows 3.xx.
Обнаруживается по присутствию VxD устройства WINICE. Отслеживает
конструкции вида cs:pushf.
- Deglucker by S.Gorokhov & A.Ilyushin
Ошибки:
- Переключение в нестандартный видеорежим
- Hевозможность перехвата портов ввода/вывода
- запирание клавиатуры через i/o портов 60h/64h
Предоставляет API через int 15h функции 0FFxxh. Трассирует программу через
DRx (аппаратные регистры останова).
Эмуляторы
- EDB by Serge Pachkovsky
Эмулятор 80286 процессора. Крайне убогий интерфейс, на уровне DEBUG.
Имеется возможность просмотра/изменения памяти, несколько режимов эмуляции.
- Soft Debugger
Полноценный эмулятор 80386, без поддержки функций защищенного режима.
Поддерживает отладочную информацию компиляторов Borland International.
Отслеживает изменение байтов в конвейере, имеется несколько режимов
эмуляции: с вызовом собственного int 1/int 3, режим Full Tracing, Auto
Tracing и другие.
- SD by Dmitry Groshev
Удобный и мощный сервис. Гибкие возможности для работы с
самыми разнообразными структурами данных. Может подгpyжать сеpвисные модyли.
Автоматические распаковщики
К автоматическим распаковщикам относятся программы, запускающие в
автоматическом или полуавтоматическом режиме защищаемую программу и
отслеживающие типовые участки startup-кода и соответственно настраивающие
relocations.
Функция автоматических распаковщиков - сдирание защиты с файла и получение
работоспособного EXE файла. Физика данного процесса такова: перехватывая
первое программное прерывание, вызванное программой после отработки защиты,
распаковщик снимает дамп памяти с уже расшифрованным кодом защищенной
программы. Первый этап работы по снятию - нахождение этого самого первого
прерывания. Это делается при помощи любого отладчика. Не будем вдаваться в
подробности отлова первого прерывания, замечу лишь одно - все программы
написанные на C/C++ и откомпилированные компилятором любой фирмы одной из
первой командой проверяют версию OS:
B4 30 mov ah, 30h
CD 21 int 21h
В программах, написанных на Паскале идет перехват векторов 00 и некоторых
других:
B4 35 mov ah, 35h
CD 21 int 21h
Если посмотреть ссылку на это место, то можно увидеть, что этот фрагмент
вызывается после двух far call-ов:
call far Initturbo
call far SwapVectors
Таким образом можно найти истинную точку входа в паскалевскую программу.
- Autohack by BCP group
Предоставляет три варианта запуска:
- Распаковка трассировкой. В данном режиме работают почти все
распаковщики программ. В данном режиме возможна распаковка программ, не
защищенных от трассировки. Режим работает следующим образом: программа
загружается в память, перехватывается первое прерывание, возводится флажок
пошаговой трассировки (поэтому распаковка в этом режиме относительно
медленно работает), управление передается загруженной программе, далее
обработчик первого прерывания анализирует сегмент кода трассируемой
программы и ждет смены регистра CS (число смен регистра CS запрашивается во
время запуска под именем "глубина трассировки"). После этого сбрасываются
дампы памяти, и операция повторяется с загрузкой программы с другого
начального адреса.
- Стандартный режим взлома. Режим работы программы основанный на режиме
перехвата определенных моментов после отработки механизма защиты и
сброса дампов памяти.
- Режим взлома с поддержкой таблиц компиляторов. Идентичен второму
режиму, но нацелен на определенные компиляторы, поэтому взламывает более
корректно. о если взламывается программа откомпилированная неизвестным
AutoHack-у компилятором, то произойдет запуск взламываемой программы с
последующими глюками.
- Intruder by Creat0r
Отслеживает startup-код.
- SnapShot by Dale Co.
- CUP by Cyberware products
- UNP by B.Castricum
- Tron
- TSUP
Дизасемблеры
Дизасемблер переводит выполняемый код в листинг на асемблере.
Прочие программы
К прочим программам можно отнести программы ориенитированные на специальные языки,
например:
- Clipper
- Valkyrie Declipper 5, Version 1.0, Revision K
- "+" Есть возможность анализиpовать низкоуpовневый код, декомпиляция до исходных текстов
"-" Может pаботать только с известными ему линковщиками, если линковщик ему
не известен, то он отказывается pаботать.
- Hackers Declipper v1.3 by KrK //UCL
- "+" Позволяет анализиpовать низкоуpовневый код, можно самостоятельно задать
начало псевдокода и таблицы имен пеpеменных.
"-" Полностью pучная pабота пpи декомпиляции, не pаспознает начала пpоцедуp,
не создает исходного текста, и т.д и т.п.
- Rescue5 v1.0 CA-Clipper decompiller
- "+" Декомпиляция до исходников.
"-" Понимает очень мало линкеpов, нет возможности анализиpовать псевдокод
- FoxPro
- ReFox
Программы типа Hiew (Hacker's view by SEN), позволяющие просмотреть
код, изменить его, дизасемблировать участки кода.