Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 419

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!

подскажите, как можно организовать защиту программы с помощью привязки к железу.
можно указать ссылки на ресурсы, в которых есть ответ на поставленный вопрос

Насыров И.Т. Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Насыров И.Т. (статус: Посетитель)
Вопрос отправлен: 15 марта 2008, 22:42
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Насыров И.Т.!
Я думаю, вам стоит начать с прочтения цикла статей вот здесь http://www.delphikingdom.com/asp/itemq.asp?mode=1&itemid=8
Но запомните одно, что бы там не говорили:"Нет защиты, которую нельзя сломать. Просто есть защиты, которые не выгодно ломать. Но если надо - взломают"

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 16 марта 2008, 01:20

Ответ #2. Отвечает эксперт: Drozdov D.V.

Здравствуйте, Насыров И.Т.!
Могу подсказать следующее:
1. Простая привязка к конкретному диску. оптимально диск А:\ (3.5)
2. Привязка к томужи диску но используя его метку. Типа от копирования (ламера)
3. Тоже но предворительно повредить один из секторов или кластер и превизатся к битому кластеру.
Поясняу старый приём 90 но необходимо как минимум уметь считывать сектора.
4. Привязка к конкретному серийнику прогу запускаем откуда угодно а ключём для запуска работает конкретный диск как в играх.
Где взять? Можно переделать любуу прогу по определению диска.
Всё ниже. Удачи!

Приложение:
  1.  
  2. unit Unit1;
  3.  
  4. interface
  5.  
  6. uses
  7. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  8. Dialogs, StdCtrls;
  9.  
  10. type
  11. TForm1 = class(TForm)
  12. Button1: TButton;
  13. procedure Button1Click(Sender: TObject);
  14. private
  15. { Private declarations }
  16. public
  17. { Public declarations }
  18. end;
  19.  
  20. var
  21. Form1: TForm1;
  22.  
  23. implementation
  24.  
  25. {$R *.dfm}
  26.  
  27. function IsDriveReady(DriveLetter : char) : bool;
  28. var
  29. OldErrorMode : Word;
  30. OldDirectory : string;
  31. begin
  32. OldErrorMode := SetErrorMode(SEM_NOOPENFILEERRORBOX);
  33. GetDir(0, OldDirectory);
  34. {$I-}
  35. ChDir(DriveLetter + ':');
  36. {$I+}
  37. if IoResult
  38. <>
  39. 0 then
  40. Result := False
  41. else
  42. Result := True;
  43.  
  44. ChDir(OldDirectory);
  45. SetErrorMode(OldErrorMode);
  46. end;
  47.  
  48. procedure TForm1.Button1Click(Sender: TObject);
  49. begin
  50. if not IsDriveReady('A') then
  51. begin
  52. ShowMessage('Drive Not Ready');
  53.  
  54. end
  55. else
  56. begin
  57. ShowMessage('Drive is Ready');
  58. close;
  59. end;
  60. end;
  61.  
  62.  
  63. end.
  64. ///
  65.  
  66.  
  67.  


Ответ отправил: Drozdov D.V. (статус: 4-ый класс)
Время отправки: 16 марта 2008, 10:52


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:33
Выполнено за 0.03 сек.