Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Регистрируем UrlControl v1.5

Обсудить статью на форуме

Очень удобно, когда все крэкерские инструменты, книги и статьи в одном месте. Используйте сборник от EXELAB - вот тут.

Автор: KingSise <cracker_de@mail.ru>

Используемые инструменты:
DeDe. ;
OllyDbg v1.10.
kWdsm


Вступление

Описание программы:

UrlControl - программа, которая закрывает окна Интернет-браузера, если в его заголовке или в адресе будет "недопустимое" слово (список запрещенных слов и адресов Вы формируете по своему усмотрению). Добавив ее в автозагрузку, Вы можете оградить себя от всплывающих окон и навязчивой рекламы, а своих детей от "запретных" сайтов в сети, и при этом также отслеживать, были ли попытки зайти на подобные сайты (программа работает в скрытом режиме и ведет соответствующий лог). Вы также можете не скрывать программу целиком, а оставить ее иконку в системном трее, поставив при этом пароль на запуск администрирующей части и закрытие самой программы (т.е. выгрузку резидентного модуля). Надеюсь, что программа окажется полезной и администраторам Интернет-клубов, трафик которых резко возрастает, если посетители посещают порносайты.


Здарова всем!


Не так давно мне пришло письмо с просьбой взломать программку UrlControl v 1.5, которую можно скачать здесь: http://www.alonewolfsoft.narod.ru

Ее можно взломать двумя путями, один из которых - замена нескольких условных переходов на nop. Мы его рассматривать не будем. Зато попробуем разобраться с алгоритмом генерации правильного регистрационного кода и написанием кейгена.

На мой взгляд, способ, который мы будем рассматривать, самый лучший, т.к. написав кейген, мы сможем зарегить все программы с сайта alonewolfsoft.narod.ru Дело в том, что все программы на этом сайте используют общий алгоритм генерации активационного кода.
Приступим к исследованию:


Программа запакована UPX, следовательно, с распаковкой проблем возникнуть не должно. Откроем нашу программу в Олли, найдем все текстовые строки. Очень мне понравилась строка "UserKey". Вот на ней мы и поставим бряк. На 4 строки ниже видим:


00465DCB  |. E8 3CEAFFFF    CALL URLContr.0046480C


Этот call нам и нужен, именно он генерирует правильный серийный номер. Заходим в него и внимательно изучаем.
Теперь рассмотрим сам алгоритм генерации:


У меня Код 1 был такой: 810312098991206

1. Зачеркиваем первые 3 цифры первого кода и последнюю цифру: 810312098991206 Получаем 31209899120.

2.Первые 4 цифры первого кода складываем с последними четырьмя (810312098991206): 8103+1206=9309

3. Берем полученный результат из пункта 1 (31209899120) и приписываем в конец результат, полученный в пункте 2. Получаем: 312098991209309

4. 312098991209309 - правильный ключ. Таким же способом можно воспользоваться для генерации ключей к остальным программам с сайта alonewolfsoft.narod.ru

P.S. Каким же образом я узнал алгоритм генерирования серийника. Все очень просто. Первым делом я подсмотрел правильный серийник в Олли. Затем обратил внимание на то, что первые 11 цифр правильного серийника входят в состав номера, данного при инсталляции (код 1). Оставалось только узнать, откуда берутся последние 4 цифры. Тут тоже все просто. Наверное, простой "код 1" сгенерировался, настолько простой, что обратить внимание на то, что последние 4 цифры - есть сумма первых 4-х с последними 4-мя цифрами, труда никакого не составляла.

Кейген на делфи:


 unit Unit1;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, Buttons;
 
 type
   TForm1 = class(TForm)
     Edit1: TEdit;
     Label1: TLabel;
     Button1: TButton;
     Label2: TLabel;
     Label3: TLabel;
     Label4: TLabel;
     Label5: TLabel;
     SpeedButton1: TSpeedButton;
     SpeedButton2: TSpeedButton;
     Edit2: TEdit;
     Label6: TLabel;
     procedure Button1Click(Sender: TObject);
     procedure SpeedButton1Click(Sender: TObject);
     procedure SpeedButton2Click(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;
 
 var
   Form1: TForm1;
 
 implementation
 
 {$R *.dfm}
 
 procedure TForm1.Button1Click(Sender: TObject);
 var i:integer;
     s:string;
 begin
   Label1.Caption:=’’;
   Label2.Caption:=’’;
   Label3.Caption:=’’;
   s:=Edit1.Text;
   for i:=4 to length(s)-1 do
   begin
     Label1.Caption:=Label1.Caption+s;
   end;
   for i:=0 to 4 do
   begin
     Label2.Caption:=Label2.Caption+s;
   end;
   for i:=length(s)-3 to length(s) do
   begin
     Label3.Caption:=Label3.Caption+s;
   end;
   Label4.Caption:=’s/n (Typ 1.):  ’+Label1.Caption+IntToStr(StrToInt(Label2.Caption)+StrToInt(Label3.Caption));
   Label5.Caption:=’s/n (Typ 2.):  ’+Label1.Caption+IntToStr((StrToInt(Label2.Caption)+StrToInt(Label3.Caption))*2);
   Label4.Visible:=True;
   Label5.Visible:=True;
   SpeedButton1.Visible:=True;
   SpeedButton2.Visible:=True;
   SpeedButton1.Left:=Label4.Left+Label4.Width+10;
   SpeedButton2.Left:=Label4.Left+Label4.Width+10;
 end;
 
 procedure TForm1.SpeedButton1Click(Sender: TObject);
 begin
   Edit2.Text:=Label1.Caption+IntToStr(StrToInt(Label2.Caption)+StrToInt(Label3.Caption));
   Edit2.SelectAll;
   Edit2.CopyToClipboard;
 end;
 
 procedure TForm1.SpeedButton2Click(Sender: TObject);
 begin
   Edit2.Text:=Label1.Caption+IntToStr((StrToInt(Label2.Caption)+StrToInt(Label3.Caption))*2);
   Edit2.SelectAll;
   Edit2.CopyToClipboard;
 end;
 
 end.


Автор статьи: KingSise (cracker_de@mail.ru)

Обсуждение статьи: Регистрируем UrlControl v1.5 >>>


Комментарии к статье: Регистрируем UrlControl v1.5

SLV 02.07.2005 21:54:18
Кейген на делфи эт жостко =)
---
KingSise 04.07.2005 03:45:33
так это самый простой вариант, зачем же напрягаться? Да и ктому же я не думаю, что в этом случае вообще кейген нужен, вполне и calc.exe подойлет :-)
---
Godness 04.07.2005 12:52:40
Ахуитительные статьи пошли! Чувак, зачем такую статью то писать?! Пользы аж 0.00000!
---
Godness 04.07.2005 12:53:27
с уважением
---
Devastator 04.07.2005 17:12:57
Родился женился умер.
А где жизнь?
По-моему важен не результат, а умение найти путь к его получению. Почему мы в итоге получили такието цифры,а не иные?
Почему к примеру функция 0046480C ответственна за генерацию ключа? Вы можете сказать, что и так всё ясно... для Вас возможно и так, для меня СУДЯ ИЗ СТАТЬИ это не очевидно. Покажите всем КАК производился анализ, а не то что он произведён.
С уважением.
---
mysterio 04.07.2005 19:42:33
Серийник генерится не совсем так как написано. Попробуйте с этим алгоритмом найти ключ для другого имени.
Keygen работать не будет !!!!
---
mysterio 03.07.2005 20:07:00
[i]Таким же способом можно воспользоваться для генерации ключей к остальным программам с сайта alonewolfsoft.narod.ru[/i]

Попробуй тогда с этим кейгеном зарегистировать BForce v2.0.
Статья полная лажа !!!
---
DemON/[DH]/[tPORt] 03.07.2005 21:27:37
чтож вы так на парня напали???
нормальная статья, вы вспомните свои[ежели таковые есть]
ну не очень подробная, но она заставит задуматься чела..
---
KingSise 03.07.2005 21:49:19
\"Попробуй тогда с этим кейгеном зарегистировать BForce v2.0.\" - принцип генерации там такойже... Возможно последнии 4 и первые 4 нужно не только сложить но и на 2 умножить (или поделить).
Если нужно кейген написать - подсмотри правильный серийник. Как действовать дальше - в статье описано. Кроме того кейген описанный в статье зарегит и эту порогу, скомпилированный exe качай с могего сайта: http://gwsoft.chat.ru/
___________

\"Серийник генерится не совсем так как написано. Попробуйте с этим алгоритмом найти ключ для другого имени.
Keygen работать не будет !!!!\" - ТАМ НЕТ ИМЕНИ, там есть число - \"ключ 1\". Кроме того, перед тем как послать статью, протестил алгоритм на 3-х компах с разной конфой.
_________
---
KingSise 03.07.2005 21:55:04
\"А где жизнь? Почему мы в итоге получили такието цифры,а не иные?\" - с Вами полностью согласен, моя недоработка. К сожалению я не умею настолько подробно все расписывать, т.к. я просто не писатель. \"Почему к примеру функция 0046480C ответственна за генерацию ключа?\" - ну наверное потому что в регистрах после ее выполнения лежит нечто похожее на правильный серийник, который в последствии и есть правильный.
---
anonim 05.07.2005 08:07:27
Почитайте копию разгромной статьи в гостевой книге на http://www.narod.ru/guestbook/?owner=9649316 - там еще смешнее.... ;)
---
mysterio 06.07.2005 16:17:48
\\ Кроме того кейген описанный в статье зарегит и эту порогу, скомпилированный exe качай с могего сайта\\:
\\ This file is hosted by Tripod, a Lycos®Network Site, and is not available for download. Please check out Tripod\’s Help system for more information about Remote Loading and our Remote Loading policy.\\

Это круто.
---
mysterio 06.07.2005 16:18:11
\\ТАМ НЕТ ИМЕНИ, там есть число - \\\"ключ 1\\\".
А ты знаешь как получается это число \"ключ 1\"? Вот как оно получается:
Берется значение символа по ASCII-коду отнимается 2 и складывается в строку ( (45-2) + (56-2) + (90-2) = \"435488\"). Дальше обрезатся и получается \"ключ 1\" (к стати для имени разной длины - обрезается по разному !!!).

\\Кроме того, перед тем как послать статью, протестил алгоритм на 3-х компах с разной конфой.\\
Ключ зависит не от конфигурации машины, а от имени юзверя который вошол в систему. Причем если имена юзверей, например, 1-го: Vasya а 2-го Vasyi - то ключи (\"ключ 2\") для них будут одинаковы.
---

Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS