DELPHI FAQ: Как определить - находится ли Ваше приложение в режиме отладки ?


Как определить - находится ли Ваше приложение в режиме отладки ?
Previous  Home  Next


Автор: Simon Carter
Обычно господа взломщики, для того, чтобы взломать защиту приложения, запускают его в режиме отладки и анализируют машинный код для определения точки перехвата ввода пароля с клавиатуры.
Обычно таким способом ломаются игрушки :)
Конечно данный способ не сможет полностью защитить Ваш программный продукт от взлома, но прекратить выполнение секретного кода - запросто. Для этого мы будем использовать API функцию IsDebuggerPresent. Единственный недостаток этой функции, заключается в том, что она не работет под Windows 95.
Теперь посмотрим как эту функцию реализовать в Delphi:

function
 DebuggerPresent: boolean; 
type
 
  TDebugProc = function
: boolean; stdcall
var
 
  Kernel32: HMODULE; 
  DebugProc: TDebugProc; 
begin
 
  Result := False; 
  Kernel32 := GetModuleHandle('kernel32.dll'
); 
  if
 Kernel32 <> 0 then 
  begin
 
    @DebugProc := GetProcAddress(Kernel32, 'IsDebuggerPresent'
); 
    if
 Assigned(DebugProc) then 
      Result := DebugProc; 
  end

end


А это окончательный пример вызова нашей функции:

if DebuggerPresent then 
  ShowMessage('debugging'

else
 
  ShowMessage('NOT debugging'
); 

Взято с Исходников.ru http://www.sources.ru




DELPHI FAQ




EOMY TOP 100      Рейтинг@Mail.ru      Rambler's Top100