Тема: Crackmy2
Показать сообщение отдельно

  #17  
Старый 08.09.2007, 22:11
Xserg
Участник форума
Регистрация: 09.12.2006
Сообщений: 135
С нами: 10222145

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

Потестил 5000 исключений под разными отладчиками
XP(sp2) AMD64 3500+ , DDR2-800мгц

Код:
var i,x,y:dword;
    T1,T2:dword;
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.Clear;
T1:=GetTickCount;
asm
rdtsc
mov T2,eax
end;
for i:=0 to 5000 do
 try
  asm mov [$ffffffff],eax end;
  except
   on е:Exception do begin
                     X:=e.InstanceSize;
                     Y:=X*12345678;
                     end;
 end;
asm
rdtsc
clc
sub eax,T2
mov T2,eax
end;
memo1.Lines.Add('GetTickCount = '+floattostrf((GetTickCount-T1)/1000,ffFixed,10,3)+' мсек);
memo1.Lines.Add('rdtsc = '+floattostrf(T2/1000000,ffFixed,20,6));
end;

Без отладчика
GetTickCount = 0,032 мсек
rdtsc = 85,362372

Ida Pro
GetTickCount = 0,172 мсек * 5
rdtsc = 385,499853

делфи7
GetTickCount = 0,390 мсек * 12
rdtsc = 851,224255

Microsoft Visual Studio 5
GetTickCount = 3,594 мсек * 112
rdtsc = 3655,963401

Ollydbg
GetTickCount = 6,328 мсек * 197
rdtsc = 1100,028448
Ollydbg + Fhantom
GetTickCount = 0,001 мсек у меня суперкомпьютер
rdtsc = 0,000679

Ollydbg обнаружить проще всего.
 
Ответить с цитированием