Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 295

•  TDictionary Custom Sort  6 341

•  Fast Watermark Sources  6 130

•  3D Designer  9 063

•  Sik Screen Capture  6 451

•  Patch Maker  6 867

•  Айболит (remote control)  6 854

•  ListBox Drag & Drop  5 729

•  Доска для игры Реверси  96 586

•  Графические эффекты  7 070

•  Рисование по маске  6 370

•  Перетаскивание изображений  5 243

•  Canvas Drawing  5 616

•  Рисование Луны  5 314

•  Поворот изображения  4 866

•  Рисование стержней  3 451

•  Paint on Shape  2 709

•  Генератор кроссвордов  3 588

•  Головоломка Paletto  2 879

•  Теорема Монжа об окружностях  3 685

•  Пазл Numbrix  2 418

•  Заборы и коммивояжеры  3 100

•  Игра HIP  2 061

•  Игра Go (Го)  1 984

•  Симулятор лифта  2 347

•  Программа укладки плитки  2 048

•  Генератор лабиринта  2 505

•  Проверка числового ввода  2 193

•  HEX View  2 518

•  Физический маятник  2 135

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Как определить - находится ли приложение в режиме отладки



Автор: 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');





Похожие по теме исходники

Консольное DOS приложение




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте