рекламодателям фирмы/add расшифровка штрих-кодов links/add
http://kiev-security.org.ua
Содержание
Вот сегодня на винте откопал. Ух как в момент обнаружения пальчики по асму затосковали...
Это наставление было написано мной в 1999 году для пособия, но естественно в него оно попало в покоцанном виде да еще и на украинском языке :)
Вот выкладываю его в первозданном, так сказать, виде.
Anton Morozov, 1.02.2003
======================================
Наставление на путь истинный юному взломщику.
Да будет свет!
в этой Вашей
тьме.
Я и еще кто-то,
не помню кто.
При написание наставления подразумевалось, что читатель знаком с
языком Ассемблера и принципом работы ПЭВМ на уровне выше нижнего.
Для взлома широкого круга программ далеко не достачно одного от-
ладчика Soft-ICE. Существеет множество других очень удобных средств
для осуществления этой цели, например, W32Dasm от фирмы URSoftware, но
здесь будет рассмотрена идея взлома только с помощью Soft-ICEa.
Перед началом следует определиться, каким из дву способов иссле-
дования "подопытного кролика" удобнее воспользоваться. Первый способ
заключается в исследование программы пошаговым методом с самого нача-
ла. Для этого ее загружают , если она ДОС-программа, с помощью утилит-
ки DLDR.EXE, а если WIN-программа, то - WLDR.EXE. Пример, DLDR.EXE
X.COM. Обе эти утилиты входят в пакет Soft-ICEа. Этот способ очень
трудоемок, особенно если исследуемая программа большого размера, но
зато он позвалет тщательно изучить и понять алгоритм ее работы, что в
свою очередь поведет за собой упрощение взлома. Второй способ проще,
но и сложнее. Абсурд. Следует сперва отыскать тот участок в программе,
который отвечает за защиту, а уж потом его исследовать. Для этого ис-
пользуют установку контрольных точек на функции или действия, вызывае-
мые/осуществялемые исследуемой программой, при этом они сперва отклю-
чаются (см. команду BD), а при начале отработки защиты включаются (см.
команду BE). В результате, когда сработает контрольная точка, будет
получена возможность исследовать только часть программы, содержащей
код защиты. На практике это может быть так, самый расспростаненный
пример. Некая WIN-программа, назавем ее Х, в течение 30 дней демонс-
трирует всю свою мощь в работе. По истечению срока, Х просит перечис-
лить некую сумму денег на счет ее производителя, затем получить у него
секретный код, ввести его и продолжить работать без каких-либо ограни-
чений. Если код не будет введен, то самай нужный некий метод расчета
будет недоступен или вообще Х перестанет работать. Вводим в качестве
кода любой набор знаков и Х выводит сообщение на экран, что код не со-
ответстует. Затем ставим контрольную точку, например, на функцию выво-
да на экрана, отлючаем ее (см. команду BD), заходим в окошко ввода ко-
да, вводим опять случайный набор знаков, включаем контрольную точку
(см. команду BE), жмем клавишу, потверждающую ввод кода, и перед выво-
дом сообщения о несоответствии кода, срабатывает контрольная точка
т.е. найден участок защиты. Делее следует подняться чуть выше по коду
программы (см. описание F10) и проанализировать причину ввывода окошка
уже изнутри. Для попадения в код защиты ДОС-программ можно устанвли-
вать контрольные точки на прерывания (21h, 10h, 16h, 13h и др.), на
доступ к портам и учаскам памяти. В случае же WIN-программ вот некото-
рые, наиболее часто используемые, функции для установки контрольных
точек и краткое их описание (полное описание можно получить, ознакома-
ившись c SDK и DDK):
- вызываются при работе с файлами
--- ReadFile
--- WriteFile
--- SetFilePointer
- вызываются при работе с файлами формта ini
--- GetPrivateProfileString
--- GetPrivateProfileInt
--- WritePrivateProfileString
--- WritePrivateProfileInt
--- GetPrivateProfileStringA
--- GetPrivateProfileIntA
--- WritePrivateProfileStringA
--- WritePrivateProfileIntA
- вызываются при работе с реестром
-- создание и удаление ключа
--- RegCreateKey
--- RegDeleteKey
--- RegCreateKeyA
--- RegDeleteKeyA
-- чтение значения ключа
--- RegQueryValue
--- RegQueryValueA
-- открытие и закрытие ключа
--- RegOpenKey
--- RegOpenKeyA
--- RegCloseKey
--- RegCloseKeyA
- вызываются при работе с окнами диалога
-- получить текс или число из окна
--- GetWindowText
--- GetDlgItemText
--- GetWindowTextA
--- GetDlgItemTextA
--- GetDlgItemInt
- вызываються при создание окон с сообщениями (см. выше пример)
--- MessageBox
--- MessageBoxA
--- MessageBoxExA
--- MessageBeep
- другие фунции вывода сообщений
--- SENDMESSAGE
--- WSPRINTF
- вызываются для получение даты и времени
--- GetSystemTime
--- GetLocalTime
- вызывается для устанвке времени создания файла равного текущему
--- SystemTimeToFileTime
--- DosDateTimeToFileTime
- вызывается для уставки системного времени равного времения создания файла
--- FileTimeToSystemTime
--- FiltTimeToDosDateTime
- вызывается создания/открытия окна
--- createwindow
--- createwindowexa
--- showwindow
- вызывается для определения типа носителя, например, для проверки CD-ROM
это или нет
--- GetDriveType
--- GetDriveTypeA
- вызывается для определения текущего диска
--- GetLogicalDrives
--- GetLogicalDrivesA
- вызывется для определения всех пимеющихся логических дисков
--- GetLogicalDriveStrings
--- GetLogicalDriveStringsA
- вызывается для проверки на наличие mscdex
--- прерывание 2F, AX=1500h
- вызываются для получения информации о окне
--- GETWINDOWWORD
--- GETWINDOWLONG
Вот уже сделан первый четвертьшаг в качестве взломщика. А если честно, то
научить этому к сожалению нельзя, до состояния взломщика нужно дойти самому
и стоять на этом пути в гордом одиночестве с самого начала т.к. бред одного
сумашедшего не доступен для понимания другому.
Anton Morozov,04.11.1999.
======================================
HOME
Если у вас есть сайт или домашняя страничка - поддержите пожайлуста наш ресурс, поставьте себе кнопочку, скопировав этот код:
<a href="http://kiev-security.org.ua" title="Самый большой объем в сети онлайн инф-ции по безопасности на rus" target="_blank"><img src="http://kiev-security.org.ua/88x31.gif" width="88" height="31" border="0" alt="security,безопасность,библиотека"></a> |
Идея проекта(C)Anton Morozov, Kiev, Ukraine, 1999-2022,