Показать сообщение отдельно

  #15  
Старый 01.08.2006, 18:33
Micr0b
Участник форума
Регистрация: 14.01.2006
Сообщений: 242
С нами: 10695206

Репутация: 245
По умолчанию

Начало на ссылка

Продолжение.

###Убираем наги.###

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

Как правило убрать наг-окно не представляет труда, в этом можнолегко убедиться на
примере FaNt0ms CrackMe #2.После запуска проги пользователя одаривают не один,
а сразу двумя наг-окошками, но задача от этого практически не усложняеися.
к сожалению, взможность негистрации не предусмотрена, поэтому единствинное,
что остается сделать, - это вручную убрать из кода левые фрагменты програмы.
Или точнее говоря, вызовы процедур, выводящих на экран эти назойливые сообщения.
В принципе это можно сделать с помощью дизассамблера и НЕХ-редактора, но удобнее и
уместнее все-такм использовать отладчик (или и то, и другое одновременно) - скоро
ты в этом убедишся.

Итак, запускаю OllyDBG, а с помощью меню отрой файл CrackMe2.exe. В принципе, найти
нужный фрагмент кода, содержащий вызовы левых процедур, можно по описаному ранее
алгоритму в(часть №1).Для етого нужно кликнуть правой мыши в окне с ассемблерным кодом.
и в контекстном меню выбрать пункт Search for -> All referenced text string.
В появившемся списке ты срвзу же увидишь текст сообщения выводимый в окне нага, а
двойным кликом сможешь перейти туда, где н используется. Но мы пойдем по другоу пити
и изучим еще один ключевой пример, которой активно используеться во время взлома программ.
Если ты уж когда-то пробовал ломать програмы, то наверняка, слышал о так называемых
брейкпоинтах (breakpoints).Брейкпоинт - это место останова програмы, то есть точка,
в которой программа приостанавливает свое выполнение и указывает адрес текущей команды
в отладике. Использовать ето черезвычайно полезный прием очень просто. Нам уже извесно
что, небольшое окошко с сообщением легко может бытьвыведено на экран с помщью функции
MessageBoxA. Теперь все, что от нас требуется - установить точку останова на вызове этой
функции, а после остановки программы всего лишь вырезать из кода ее вызов. Попробуем.?)
Если правильно установил OllyDBG и подключил чрезвычайно полезный плагин CommandBar, то в
нижней части экрана должно светиться окно для ввода команды. Введем команду для установки
точки останова на вызове функции MessageBoxA: bpx MessageBoxA. Правильност установки
брейкпойнта можно проверитьв окне Breakpoints (меню View-> Breakpoints). Там же его можно
на время деактивизировать, или вовсе удалить.