Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];




Вниз

Защита 


Durak   (2002-04-02 17:23) [0]

Плиззз, срочно, все кто может, умоляю, подскажите как защетить прогу, чтою её могли читать только с дискеты, а на диск перекинуть не могли, ПЛИЗЗЗ



Alx2   (2002-04-02 17:29) [1]

Прога - файл. Если можно прочитать с дискеты, то можно и записать куда-нибудь. Вопрос можно поставить по-другому: как сделать, чтобы прога запускалась только с дискеты, или, точнее, только с определенной дискеты. А тут решений множество, как и способов их обойти....



olookin   (2002-04-02 17:32) [2]

А мне в голову пришло такое решение. При старте программы проверять диск, с которого она запущена (Application.ExeName). И если диск не А, то выключать программу.



yaJohn   (2002-04-02 17:36) [3]

Так чтобы не смогли - нельзя. Смогут. Но крови попортить можно.
Напиши все в виде ДЛЛ. Сам EXE занимается только загрузкой ДЛЛ по фиксированному пути (например a:\mydll.dll) и запуском стартовой процедуры.
Можно файл ДЛЛ урезать до границы кластера + 1, а перед загрузкой - увеличивать до оригинального размера. Под ДОС это даже работало. Но это очень длинная тема.
Методов - масса и все ломаются.





Anatoly Podgoretsky   (2002-04-02 17:54) [4]

olookin © (02.04.02 17:32)
Это не препятствует "на диск перекинуть не могли"



olookin   (2002-04-02 17:56) [5]

Anatoly Podgoretsky

Да, но ведь и программа работать не будет. Задача, получается решена.



Reindeer Moss Eater   (2002-04-02 18:05) [6]

> olookin
subst A: C:\Folder With A Stolen Program
И имя диска у Application.ExeName будет как раз A:

:)



olookin   (2002-04-02 18:11) [7]

Reindeer Moss Eater

Ну тогда я согласен с yaJonh:

Так чтобы не смогли - нельзя. Смогут.



yaJohn   (2002-04-02 18:12) [8]

2 Reindeer Moss Eater
А это уже под силу только хакеру. :)



Chris   (2002-04-02 20:09) [9]

Есть еще вариант. Проверять серийный номер дискеты или жесткого диска.

http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988622197&n=15



Alexander Ionov   (2002-04-03 02:14) [10]

Куда вы все порулили? По-моему решается все достаточно просто.
1. Выковыриваем имя диска из Application.ExeName
2. Скармливаем его функции GetDriveType. Если она вернула DRIVE_REMOVABLE, то продолжаем работать (это будет либо обычный дисковод, либо Zip-drive), если же что-то другое - посылаем и выходим.
Блокировать переписывание файла программы с дискеты просто не имеет смысла.



Sat7   (2002-04-03 09:57) [11]

По-моему тебе надо не просто с дискеты, а именно сопределенной дискеты. :)
У тебя есть exe-шник, который нужно защитить и куча дискет, куда ты его запишешь и откуда он должен работать.
Делается все на самом деле просто. Просто под каждый новый диск будет свой exe-шник. Дополнительно пишется небольшой патчер, который считывает серийный номер дискеты и патчит им тот файл(защищаемый exe-шник), который будет записан на дискету. В еxе-шнике такой кусок кода:
...
GetVolumeInformation(...,@res,...); // res - переменная DWORD, имя устройства "A:\" слэш в конце обязателен.
if res<> 122323455 then close;
...

Форматируешь дискету, запускаешь патчер, который берет с нее сер. номер и прописывает в exe-шник вместо 122323455. Потом копируешь пропатченный файл на дискету и ...все. Можно даже тип устройства не проверять GetDriveType().



Anatoly Podgoretsky   (2002-04-03 10:36) [12]

olookin © (02.04.02 17:56)
Задача работоспособности не ставалась, была задача о защите от копирования. Я не знаю зачем такая задача нужно, для меня и тот и другой диски и мне без разницы с какого я ее буду читать, кроме скорости конечно.

Sat7 © (03.04.02 09:57)
Существуют программы, которые при копировании не изменяют серийный номер, приходилось с этим бороться. Но если речь идет об защите, любой начинающий взломщик сделает необходимый серийный номер за несколько секунд, пользуясь только обычным инструментом.

А вот зачем Дураку это нужно, он не объясняет :-(



Sat7   (2002-04-03 10:48) [13]

Anatoly Podgoretsky © (03.04.02 10:36)
Само собой, что все это ломается за несколько часов (минут :))), но в данной ситуации, по-моему, лучше вряд ли что-то можно придумать. Разве что только на диске дырки делать. Физические... Да и это скопируют. Вместе с серийным номером. Хотя от большинства узеров (и не только) спасет.

Durak (02.04.02 17:23)
Попробуй нестандартный формат, разные длины секторов, число секторов на дорожке поменяй. Это покруче будет.



Anatoly Podgoretsky   (2002-04-03 10:59) [14]

Sat7 © (03.04.02 10:48)
Зачем нам обсуждать посторонний вопрос, для этого надо создать отдельную ветвь.




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.016 c
14-46506          Alx2                  2002-03-07 10:04  2002.04.15  
Поздравляю дам, нашедших себя на поприще программинга, с 8 Марта!


14-46495          Slava                 2002-03-07 12:33  2002.04.15  
Opera & cgi.exe


7-46527           Fellomena             2002-01-18 14:06  2002.04.15  
API, System resources and ******* (inside)


3-46242           ava                   2002-03-25 00:03  2002.04.15  
SQL вопрос


4-46545           fddiynic              2002-02-13 04:10  2002.04.15  
winaip32