Регистрация Internet ManiacDelphi , Программа и Интерфейс , Исследование программРегистрация Internet ManiacВВЕДЕНИЕ Internet Maniac - программа для получения информация о серверах в Интернет. Включает такие возможности, как Ping, Finger, Traceroute и т.д. Для исследованиz данной программы мы будем использовать отладчик SoftICE. Же- лательно, версии 4.00 или выше. ИССЛЕДОВАНИЕ При каждом запуске программа в заголовке окна выдает строку UNREGISTERED, что само по себе уже угнетает. В этой статье мы рассмотрим, как ее зарегистриро- вать. Запустим программу. В меню Help есть пункт Register..., с помощью которого мож- но ввести имя (Your Name) и код (Registration code). Попробуем ввести любые имя и код и нажмем на кнопку Register. Появится окошко с надписью Incorrect registration code. Хорошо... Перейдем в SoftICE и поставим контрольные точки (breakpoint) на выполнение функций GetDlgItemTextA() и GetWindowTextA(). Для этого введем сле- дующие команды:
Хотя названия функций можно вводить и маленькими буквами, рекомендуется вводить их так. Таким образом, Вы быстрее их запомните. Ну, что ж... Введем имя (я ввел YH2K) и код (я ввел 110184). Нажимаем на кнопку, и... Программа прерывается, и мы попадаем в отладчик. Программа остановилась при вызове функции GetDlgItemTextA(). Нажмем F12, чтобы вернуться из функции в про- грамму. Теперь посмотрим на участок, откуда она вызывается:
Попробуем разобраться. По адресу 4044А9 происходит вызов функции, считыва- ющей имя, введенное пользователем. По адресу 4044ВВ происходит вызов функции,.NeCrOmAnCeR. Регистрация Internet Maniac v1.08. 2 считывающей код. По адресам 4044С5 и 4044С6 происходит запись в стек двух пара- метров, которые будут переданы функции, вызывающейся по адресу 4044С7. С по- мощью кнопки F10 дойдем до адреса 4044С5 и посмотрим, что хранится в регистрах EDX и EAX. Выполняется это с помощью следующих команд:
И что же мы увидим??? В этих регистрах хранится имя и код, которые мы ввели! А зачем функции получать в качестве параметров имя и код??? Правильно... Отпра- вимся внутрь функции с помощью кнопки F8. Начнем анализировать код:
Обратим внимание на адрес 406999. Вызывается функция, определяющая длину имени. Далее, если длина имени не меньше 4, то осуществляется переход на 4069АВ. А если длина меньше 4, то переход не осуществляется и происходит выход из функ- ции по адресу 4069АА. После того, как произошел переход на 4069АВ, по шагу про- кручиваем код и доходим до того места, в котором сравнивается введенный нами код с правильным. Конечно... Вызывается функция lstrcmp(), которая предназначена для сравнения строк. Посмотрим параметры, которые ей передаются: в регистре EDX (d edx) находится код введенный нами код (у меня 110184), а в регистре EAX (d eax) - искомый код. В моем случае - 1184420864-200144. Вот его-то и следует переписать... Выйдем из отладчика и введем новые данные в окно регистрации (не забудьте перед этим отключить все контрольные точки - bd *). Нажимаем на кнопку Register, и... программа зарегистрирована! Казалось бы, программа исследована... Но, есть один нюанс. Помните, осуществ- лялся выход из функции, если длина имени была менее 4 символов? Вот тут-то и надо рассмотреть этот случай. В отладчике вновь включим все контрольные (be *), введем имя меньше четырех символов и нажмем на Register. Пройдем по вышеописанному пути и после выхода из функции попадем сюда:
По адресу 4044CF проверяется значение EAX, после которого устанавливается флаг нуля (Z). Далее, с адреса 4044D1 происходит переход в случае, если данный флаг уста- новлен. После этого перехода появляется окно с сообщением о неправильно введен- ном коде. Значит, нам нужно сделать так, чтобы переход не осуществлялся. Этого можно добиться путем изменения оператора условного перехода JZ на обратный ему JNZ. Шестнадцатеричный код оператора JZ 0040451D - 74h 4Аh. Когда курсор уста- новлен на строке 4044D1, наберите команду «a» (без кавычек) для переключения в режим интерактивного ассемблера. Поменяйте данный оператор на JNZ 0040451D. Таким образом, шестнадцатеричный код изменится на 75h 4Ah. Теперь если Вы вый- дете из отладчика, высветится окошко об успешной регистрации. Но... Код изменил- ся только на одну сессию работы программы, поэтому Вам нужно открыть исполняе- мый файл в шестнадцатеричном редакторе и производить модификацию в нем. Глав- ное, найти нужное место в файле. Так как комбинация 744Ah очень коротка, она мо- жет встречаться в нескольких местах в программе. Поэтому следует переписать так- же несколько байт, стоящих до и после изменяемой комбинации, например: 83C40885C0744A8B3D78004100h. Далее надо изменить байт 74h на 75h (т.е. изменить код команды JZ на JNZ). Удачи Вам! Статья Регистрация Internet Maniac раздела Программа и Интерфейс Исследование программ может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Исследование программ ::
|
|||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |