Rambler's
Top100

Исследование защиты DateX 1.0

Автор: FEUERRADER
Дата: 12.05.2003
Раздел: Reverse Engineering


  Программа: DateX 1.0
     Размер: 1145856 байт
       Язык: Borland Delphi
     Защита: код
       Цель: кейген
Инструменты: TRW2000 1.23, Borland Delphi 6.0 + KOL

Описание: по-моему я встречал уже в сети туториал на эту прогу, по-моему от UOFG Team, да и кейген в сети без проблем можно найти. Но всё-таки давайте сделаем кейген сами!

Исследование: я не буду описывать то, как я нашел адрес 4AC712, который является адресом начала генерации сернама. Смотрите, по адресу 4aC717 в еах заносится ваш сгенерированный сернам, а дальше идут вычисления:


016F:004AC712  MOV      [004B567C],EAX     <-в 4b567c наш сернам
016F:004AC717  MOV      EAX,[004B567C]     <-в еах сернам
016F:004AC71C  ADD      EAX,BYTE +05       <-eax=eax+5
016F:004AC71F  IMUL     EAX,EAX,08088405   <-множим на 8088405h
016F:004AC725  INC      EAX                <-eax+1
016F:004AC726  MOV      ECX,3B9ACA00       <-ecx=3b9aca00h
016F:004AC72B  CDQ                         <-cdq
016F:004AC72C  IDIV     ECX                <-делим ecx
016F:004AC72E  MOV      EAX,EDX            <-eax=edx
016F:004AC730  CDQ                         <-cdq
016F:004AC731  XOR      EAX,EDX            <-ксорим eax и edx
016F:004AC733  SUB      EAX,EDX            <-eax=eax-edx
016F:004AC735  MOV      [004B5680],EAX     <-записываем наш РН!

Как видите, вычисления супер простые! А автор хотел 100 рублей за свое детище. Хотя и регистрация проста, но сама программа - не пустышка, интересная, можно поприкалываться. Были бы бабосы, я бы ему заплатил...но, нет, дак нет!

КейГен: пишем кейген без VCL...но даже на WinAPI, а на KOL. На фига этот WinAPI, если есть KOL? Рабочий кейген у меня на KOL 28,5 Кб без сжатия. Со сжатием UPX 1.24 - 16,5 Кб. Итак, кейген:

procedure TForm1.EditBox1Change(Sender: PObj);
var sn,res:cardinal;
p:cardinal;
begin
sn:=str2int(editbox1.text);
p:=$3B9ACA00;
asm
mov eax, sn
add eax,5
imul eax,eax, $8088405
inc eax
mov ecx, p
cdq
idiv ecx
mov eax,edx
cdq
xor eax,edx
sub eax,edx
mov res,eax
end;
editbox2.Text:=int2str(res);

end;

Я посчитал, зачем переводить всю эту байду в Pascal. Так взял и оставил в ассемблере. Как видите, в еах засовываем сернам (у каждого компа разный), а на выходе в res из еах. Попробуйте это на VCL, разницы в результате нет.
Вот и всё, кто посчитает, что эта научная работа напрасна, идите в null.

Спасибо за интерес к этой статье!



Все права защищены ©  2003 
...::FEUERRADER::...




Rambler's Top100