Внешний вид сайта:

Обнаружить отладку приложения IsDebuggerPresent

Отлаживать Ваше приложение с целью улучшения кода, пользователи вряд-ли будут, это возможно только для создания патчей, крэков, кейгена, получения серийного номера и т.д. Так что, если отладка не производится разработчиком, то это уже попытка взлома. Поэтому важно определить, когда приложение работает под отладчиком.

Самый простой способ, хотя и самый известный для хакеров – это применение функции API Windows IsDebuggerPresent(), которая есть во всех версиях Windows, начиная с Windows 98.

Вам же нужно просто сделать вызов функции IsDebuggerPresent() и в зависимости от результата этой функции, определить поведение приложения, если оно находится под отладчиком.

Примечание: функция IsDebuggerPresent() очень известна, а ее имя будет находиться в исполняемом файле, так что я настоятельно рекомендую изменить ее имя на какое-либо менее заметное, например, на CallEditString().

Проверка на действия отладчика (пример простого приложения):

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
function DebuggerPresent : boolean;
type
  TDebugProc = function : boolean;
    stdcall;
var
  Kernel32: HMODULE;
  DebugProc: TDebugProc;
begin { DebuggerPresent }
  Result := False;
  Kernel32 := GetModuleHandle('kernel32');
  if Kernel32<>0 then
  begin
    @DebugProc := GetProcAddress(Kernel32, 'IsDebuggerPresent');
    if Assigned(DebugProc) then
      Result := DebugProc
  end; { Kernel32<>0 }
end; { DebuggerPresent }
 
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  if DebuggerPresent then Application.Terminate;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Close;
end;
 
end.

Комментарии

Нет комментариев. Ваш будет первым!