![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Защита [D1, D2, D3, D4, D5, D6, Win95/98]
Durak © (2002-04-02 17:23:00)Плиззз, срочно, все кто может, умоляю, подскажите как защетить прогу, чтою её могли читать только с дискеты, а на диск перекинуть не могли, ПЛИЗЗЗ
Anatoly Podgoretsky (2002-04-03 10:59:00) [1]Sat7 © (03.04.02 10:48)
Зачем нам обсуждать посторонний вопрос, для этого надо создать отдельную ветвь.
Sat7 (2002-04-03 10:48:00) [2]Anatoly Podgoretsky © (03.04.02 10:36)
Само собой, что все это ломается за несколько часов (минут :))), но в данной ситуации, по-моему, лучше вряд ли что-то можно придумать. Разве что только на диске дырки делать. Физические... Да и это скопируют. Вместе с серийным номером. Хотя от большинства узеров (и не только) спасет.
Durak (02.04.02 17:23)
Попробуй нестандартный формат, разные длины секторов, число секторов на дорожке поменяй. Это покруче будет.
Anatoly Podgoretsky (2002-04-03 10:36:00) [3]olookin © (02.04.02 17:56)
Задача работоспособности не ставалась, была задача о защите от копирования. Я не знаю зачем такая задача нужно, для меня и тот и другой диски и мне без разницы с какого я ее буду читать, кроме скорости конечно.
Sat7 © (03.04.02 09:57)
Существуют программы, которые при копировании не изменяют серийный номер, приходилось с этим бороться. Но если речь идет об защите, любой начинающий взломщик сделает необходимый серийный номер за несколько секунд, пользуясь только обычным инструментом.
А вот зачем Дураку это нужно, он не объясняет :-(
Sat7 (2002-04-03 09:57:00) [4]По-моему тебе надо не просто с дискеты, а именно сопределенной дискеты. :)
У тебя есть exe-шник, который нужно защитить и куча дискет, куда ты его запишешь и откуда он должен работать.
Делается все на самом деле просто. Просто под каждый новый диск будет свой exe-шник. Дополнительно пишется небольшой патчер, который считывает серийный номер дискеты и патчит им тот файл(защищаемый exe-шник), который будет записан на дискету. В еxе-шнике такой кусок кода:
...
GetVolumeInformation(...,@res,...); // res - переменная DWORD, имя устройства "A:\" слэш в конце обязателен.
if res<> 122323455then close;
...
Форматируешь дискету, запускаешь патчер, который берет с нее сер. номер и прописывает в exe-шник вместо 122323455. Потом копируешь пропатченный файл на дискету и ...все. Можно даже тип устройства не проверять GetDriveType().
Alexander Ionov (2002-04-03 02:14:00) [5]Куда вы все порулили? По-моему решается все достаточно просто.
1. Выковыриваем имя диска из Application.ExeName
2. Скармливаем его функции GetDriveType. Если она вернула DRIVE_REMOVABLE, то продолжаем работать (это будет либо обычный дисковод, либо Zip-drive), если же что-то другое - посылаем и выходим.
Блокировать переписывание файла программы с дискеты просто не имеет смысла.
Chris (2002-04-02 20:09:00) [6]Есть еще вариант. Проверять серийный номер дискеты или жесткого диска.
http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988622197&n=15
yaJohn (2002-04-02 18:12:00) [7]2 Reindeer Moss Eater
А это уже под силу только хакеру. :)
olookin (2002-04-02 18:11:00) [8]Reindeer Moss Eater
Ну тогда я согласен с yaJonh:
Так чтобы не смогли - нельзя. Смогут.
Reindeer Moss Eater (2002-04-02 18:05:00) [9]> olookin
subst A: C:\Folder With A Stolen Program
И имя диска у Application.ExeName будет как раз A:
:)
olookin (2002-04-02 17:56:00) [10]Anatoly Podgoretsky
Да, но ведь и программа работать не будет. Задача, получается решена.
Anatoly Podgoretsky (2002-04-02 17:54:00) [11]olookin © (02.04.02 17:32)
Это не препятствует "на диск перекинуть не могли"
yaJohn (2002-04-02 17:36:00) [12]Так чтобы не смогли - нельзя. Смогут.Но крови попортить можно.
Напиши все в виде ДЛЛ. Сам EXE занимается только загрузкой ДЛЛ по фиксированному пути (например a:\mydll.dll) и запуском стартовой процедуры.
Можно файл ДЛЛ урезать до границы кластера + 1, а перед загрузкой - увеличивать до оригинального размера. Под ДОС это даже работало. Но это очень длинная тема.
Методов - масса и все ломаются.
olookin (2002-04-02 17:32:00) [13]А мне в голову пришло такое решение. При старте программы проверять диск, с которого она запущена (Application.ExeName). И если диск не А, то выключать программу.
Alx2 (2002-04-02 17:29:00) [14]Прога - файл. Если можно прочитать с дискеты, то можно и записать куда-нибудь. Вопрос можно поставить по-другому: как сделать, чтобы прога запускалась только с дискеты, или, точнее, только с определенной дискеты. А тут решений множество, как и способов их обойти....