|
Вопрос # 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. Привязка к конкретному серийнику прогу запускаем откуда угодно а ключём для запуска работает конкретный диск как в играх.
Где взять? Можно переделать любуу прогу по определению диска.
Всё ниже. Удачи!
Приложение: Переключить в обычный режим-
- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
-
- type
- TForm1 = class(TForm)
- Button1: TButton;
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- function IsDriveReady(DriveLetter : char) : bool;
- var
- OldErrorMode : Word;
- OldDirectory : string;
- begin
- OldErrorMode := SetErrorMode(SEM_NOOPENFILEERRORBOX);
- GetDir(0, OldDirectory);
- {$I-}
- ChDir(DriveLetter + ':');
- {$I+}
- if IoResult
- <>
- 0 then
- Result := False
- else
- Result := True;
-
- ChDir(OldDirectory);
- SetErrorMode(OldErrorMode);
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- if not IsDriveReady('A') then
- begin
- ShowMessage('Drive Not Ready');
-
- end
- else
- begin
- ShowMessage('Drive is Ready');
- close;
- end;
- end;
-
-
- end.
- ///
-
-
-
 |
Ответ отправил: Drozdov D.V. (статус: 4-ый класс)
Время отправки: 16 марта 2008, 10:52
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|