Взлом с помощью OgreGUI. Delphi
для начинающих.
Программа Magic
Utilities 2003 V2.30 представляет собой
деинсталятор, менеджер автозагрузки
программ и Process Killer.
Испытательный срок ограничен
пятнадцатью днями, причем, об этом
каждый раз напоминается при запуске
программы и нам предлагается ввести
регистрационные данные.
Введем что-нибудь в поля User
name и Registration Code и посмотрим, что
произойдет при нажатии кнопки «Register».
Появилось сообщение: «Thanks for your registering.
Please restart program to validate the registration code».
Естественно, после перезапуска
программа вновь попросит ввести
регистрационный код. Кстати, с
помощью утилиты FileMon можно выяснить,
что Magic Utilities сохраняет
регистрационную информацию в файле
mgutil_win.ini (каталог windows), к которому
обращается при каждом запуске. Это
пригодится нам в дальнейшем.
Приступим к исследованию
файла mgutil.exe. Программа упакована
PECompact версии 1.68 - 1.84. Распаковываем
прогу с помощью UnPECompact 1.32 и пытаемся
её дизассемблировать. Смотрим список
стринг рефференсов – он пуст. Иногда
такое бывает :(. Что ж, поступим
следующим образом: обследуем
распакованный файл на наличие
текстовых строк, за которые можно
было бы зацепиться. Воспользуемся
для этого замечательнейшей
программой OgreGUI. Укажем программе
распакованный файл и установим опции
поиска текста: искать английский,
искать цифры, искать специальный
символы, искать текст UNICODE, искать
текстASCIIZ, режим поиска – грубый, тип
поиска – искать VA-ссылки. В конце
списка текстовых строчек, найденных
OgreGUI, видим массивы непонятных кодов
– это и есть регистрационные ключи.
Очевидно, регистрационный
код не зависит от имени пользователя.
Выберем один из серийников и
попробуем зарегистрироваться: все ОК,
и программа больше не надоедает
просьбами зарегистрироваться.
Теперь мы с легкостью можем написать
KeyGen.
В помощь всем, кто мало
знаком с программированием привожу
инструкцию создания генератора
ключей на Delphi для данной версии Magic
Utilities.
Обычно для решения
подобных задач я использую Delphi
версии 2.0 ;-) - выдаваемые ею exe-шники
весят меньше созданных с помощью
более новых версий.
Сначала несколько слов об
интерфейсе этой среды разработки (рис.1).
Рис. 1. Интерфейс Delphi
Центральное
место на экране занимает заготовка
формы будущего проекта. Размер формы
легко можно изменить, зацепив мышью
любой её край. Нажмите клавишу F9,
чтобы запустить на выполнение проект,
- окно Делфи исчезнет и вы увидите
пустое окно с тремя кнопками в
заголовке – свернуть, развернуть и
закрыть. Так выглядит программа, не
выполняющая никаких действий.
Закройте её с помощью кнопки Закрыть
в заголовке окна – перед вами опять
появятся панели Delphi.
Слева расположен
Инспектор Объектов (Object Inspector). Здесь
можно изменять разные
характеристики объекта, имя которого
в данный момент вынесено в заголовок
Инспектора Объектов. Если нажать на
треугольный значок, расположенный в
правой части заголовка инспектора
объектов, то откроется список
компонентов, свойства которых можно
изменить.
Палитра компонентов
содержит несколько вкладок (Standard,
Additional, Win95 и т.д.) на которых находятся
компоненты - готовые элементы,
необходимые для конструирования
проектов (кнопки, текстовые поля,
поля редактирования, средства для
работы с базами данных). Например,
чтобы разместить на форме кнопку,
выберете ее на вкладке Standard и
выделите мышью то место на форме, где
должна располагаться кнопка.
Обратите внимание, если щелкнуть на
получившейся кнопке, в заголовке
Инспектора Объектов появится
надпись Button1: TButton, т.е. в данный момент
в Инспекторе Объектов можно изменить
параметры созданной кнопки. Например,
найдите графу Caption и напротив неё
вместо надписи Button1 введите любое
другое слово – текст на кнопке
изменится. Запустите программу на
выполнение (клавиша F9) и попробуйте
нажать на созданную кнопку – никаких
действий не произойдет. Вернитесь в
Delphi (закройте окно программы
крестиком в окне заголовка).
Щелкните два раза на
созданной кнопке и перед вами
появится Окно Кода, находившееся до
последнего момента на заднем плане.
Здесь программируется обработка
действий, совершаемых над объектом.
Запрограммируем нашу кнопку так,
чтобы при её нажатии программа
закрывалась. Введем close; между begin и end.
Это будет выглядеть так:
procedure TForm1.Button1Click(Sender:
TObject);
begin
close;
end;
Теперь при нажатии на
кнопку программа будет закрываться.
Кажется, можно приступать
к написанию генератора паролей.
И опять начнем с
интерфейса. На рис. 2 показана его
заготовка, а на рис. 3 – окончательный
вид
Рис. 2. Заготовка для
интерфейса генератора ключей
Рис.3. Окончательный вид
//Запрограммируем
действия при нажатии кнопки «Generate»:
procedure
TForm1.Button1Click(Sender: TObject);
const
n=322; // n-число рег. кодов
в массиве;
а - массив из этих кодов, заданный как
константа
a : array[1..n] of string =
('EL4I****','GFA4****','E6GL****','DFG6****','E4CG****','CADC****','FDLD****',
------------------вырезано-------------------
'W29E****','F2GD****','E4CG****','EL4I****','GFA4****','E6GL****','DFG6****');
begin
Edit1.Text:=a[random(n)]; //
выбираем из массива случайный
элемент и отображаем его в Edit1
end;
//
Действия при нажатии кнопки «About»
procedure
TForm1.Button2Click(Sender: TObject);
begin
Form2.Show; // Выводим на
экран окно с информацией о программе
end;
//
Действия при нажатии кнопки «Exit»
procedure
TForm1.Button3Click(Sender: TObject);
begin
close;
end;
initialization
randomize; //инициализируем
генератор случайных чисел
Думаю, стоит
рассказать о том, как создать и
подключить к программе еще одну
форму, которая будет выводиться на
экран при нажатии кнопки «About».
Форма
добавляется так: File->New->Form .
Переключение между формами: View->Forms...Теперь
при нажатии F9 Delphi обнаружит новую
форму и предложит подключить ее к
проекту.
На рис. 4
показан примерный вариант
оформления окна «About»
Рис. 4. Внешний вид окна «About»
procedure TForm2.Label2Click(Sender: TObject);
//Если нажать на Label2
begin
ShellExecute(0, 'open', 'http://biocyborg.narod.ru', '','',SW_SHOW);
//WEB-броузер отправится по
указанному адресу
end;
procedure
TForm2.Button1Click(Sender: TObject); //
При нажатии кнопки "ОК"
begin
Close;
// закрываем окно «About»
end;
Все!
Наш KeyGen готов!
Исходники можно
скачать здесь: http://biocyborg.narod.ru/rev/dsrc.zip