Как определить - находится ли Ваше приложение в
режиме отладки ?
Автор: 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');
|