> > Разумеется, повторную загрузку библиотеки так не предотвратить, но, > >" />
Современные решения

для защиты Windows приложений

и восстановления исходного кода

Обсуждение программирования на Visual Basic в конференции ru.visual.basic


Re: O ActiveX DLL

From: "Sergey Merzlikin"

>
> > Разумеется, повторную загрузку библиотеки так не предотвратить, но,
> > наверное, автору вопроса нужно не это, а чтобы повторно загруженная
> > библиотека не выполняла полезную функцию, а это можно легко
организовать.
>
> Ага, Sergey, а как конкретно это сделать?
> Вообще, я тут подумал, меня вполне устроит запрет за любое(!)
> использование DLL в лок. сети. А в пределах одного компа -- без
ограничений.
> Пускай подсоединение по сети произойдет, но DLL должна это отловить и
выдать
> MsgBox с сообщением.
> Как это сделать?
>

В таком случае при установке Dll на компьютер программой установки можно его
имя в зашифрованном виде записать в реестр, а потом из библиотеки сравнивать
с полученным по GetComputerName.
Если допустить возможность копирования Dll на другой компьютер без
применения программы установки, тогда можно просто анализировать App.Path:
если он начинается с "\\" или буквы сетевого диска (последнее можно
проверить по GetDriveType), значит, клиент - чужой.
Теперь о том, как сделать так, чтобы с другого компьютера нельзя было
использовать библиотеку. Предположим, она устроена так: в ней есть только
один MultiUse объект, назовем его Application, который создает другие
объекты (Public NotCreatable), и раздает на них ссылки клиентам. В
Class_Initialize объекта Application можно произвести проверку и, в
зависимости от результатов, либо создать вторичные объекты, либо выдать
ошибку (Err.Raise). Если клиент проигнорирует ошибку, он просто получит
Nothing при обращении к свойствам объекта Application, возвращающим ссылки
на другие объекты. Если объектная модель устроена иначе, можно встроить
проверку во все жизненно важные свойства и методы всех MultiUse-объектов, а
после отрицательного результата проверки - Err.Raise + Exit
Property/Function/Sub.


--
Сергей Мерзликин
www.smsoft.ru/ru/



* Origin: Talk.Mail.Ru (2:5020/400)


Re: O ActiveX DLL

Hello, Sergey!
You wrote to to Sergei Ho on 14 Aug 04 17:29:35:

SM> В таком случае при установке Dll на компьютер программой установки
SM> можно его имя в зашифрованном виде записать в реестр, а потом из
SM> библиотеки сравнивать с полученным по GetComputerName.
Разве GetComputerName и RegQueryValueEx будут выполняться не на одной и той
же машине? По-моему, так вообще не получится.

SM> Если допустить возможность копирования Dll на другой компьютер без
SM> применения программы установки, тогда можно просто анализировать
App.Path:
SM> если он начинается с "\\" или буквы сетевого диска (последнее можно
SM> проверить по GetDriveType), значит, клиент - чужой.
Тоже плохо. Человек может юзать прогу с собственного расшаренного диска.
* Origin: ...With Thing One and Thing Two? (2:5080/1003.16)


Re: O ActiveX DLL

From: "Sergey Merzlikin"

> SM> В таком случае при установке Dll на компьютер программой
установки
> SM> можно его имя в зашифрованном виде записать в реестр, а потом из
> SM> библиотеки сравнивать с полученным по GetComputerName.
> Разве GetComputerName и RegQueryValueEx будут выполняться не на одной и
той
> же машине? По-моему, так вообще не получится.

Hа одной и той же. А в чем проблема? Где Dll устанавливали инсталлятором,
все OK, на других компьютерах в реестре такой записи нет, и имя компьютера
будет сравниваться с пустым местом, что даст отрицательный результат. А если
кто-то умный перенесет запись реестра на свой компьютер, то результат будет
тоже отрицательным, поскольку имя не совпадет.

>
> SM> Если допустить возможность копирования Dll на другой компьютер без
> SM> применения программы установки, тогда можно просто анализировать
> App.Path:
> SM> если он начинается с "\\" или буквы сетевого диска (последнее можно
> SM> проверить по GetDriveType), значит, клиент - чужой.
> Тоже плохо. Человек может юзать прогу с собственного расшаренного диска.

А зачем ему это разрешать? В конце концов и этот случай можно детектировать,
и сделать исключение, но, по-моему, это лишнее.



--
* Origin: Talk.Mail.Ru (2:5020/400)


Re: O ActiveX DLL

From: "Sergei Ho"

"Sergey Merzlikin" wrote in message news:cfm91c$kig$1 [@] host.talk.ru...

>> SM> Если допустить возможность копирования Dll на другой компьютер без
>> SM> применения программы установки, тогда можно просто анализировать
>> App.Path:
>> SM> если он начинается с "\\" или буквы сетевого диска (последнее можно
>> SM> проверить по GetDriveType), значит, клиент - чужой.
>> Тоже плохо. Человек может юзать прогу с собственного расшаренного диска.
>
> А зачем ему это разрешать? В конце концов и этот случай можно детектировать,
> и сделать исключение, но, по-моему, это лишнее.

Что-то я не понял. Т.е. GetDriveType возвращает DRIVE_REMOTE (= 4)
не только для чужих компов, но и для собственного расшаренного харда?
Как же тогда точно определить, что клиент цепляет DLL с физически ДРУГОГО компа?

Сергей.


* Origin: Demos online service (2:5020/400)


Re: O ActiveX DLL

Hello, Sergey!
You wrote to "A Skrobov" to A
Skrobov on 15 Aug 04 03:01:39:

SM>>> В таком случае при установке Dll на компьютер программой
SM>>> установки можно его имя в зашифрованном виде записать в реестр, а
потом из
SM>>> библиотеки сравнивать с полученным по GetComputerName.
??>> Разве GetComputerName и RegQueryValueEx будут выполняться не на одной
??>> и той же машине? По-моему, так вообще не получится.
SM> Hа одной и той же. А в чем проблема? Где Dll устанавливали
SM> инсталлятором, все OK, на других компьютерах в реестре такой записи
SM> нет, и имя компьютера будет сравниваться с пустым местом, что даст
SM> отрицательный результат. А если кто-то умный перенесет запись реестра
SM> на свой компьютер, то результат будет тоже отрицательным, поскольку имя
SM> не совпадет.
А как предполагается предотсвратить установку на более чем один комп?
Паролем? ;-)
Имхо в принципе путь неправильный - Сергею нужно защитьу от многократного
использования, а ты предлагаешь по сути защиту от HСК.
Hе говоря уже о том, что имя компьютера может и поменяться.
* Origin: "You get out of this house!" said the fish in the pot. (2:5080/1003.16)


Re: O ActiveX DLL

From: "Sergei Ho"

"A Skrobov" wrote in message news:2256856356 [@] p16.f1003.n5080.z2.ftn...

> Имхо в принципе путь неправильный - Сергею нужно защитьу от многократного
> использования, а ты предлагаешь по сути защиту от HСК.
> Hе говоря уже о том, что имя компьютера может и поменяться.

Hет мне нужно именно блокировать использование DLL с другого компа.
Я не понял, если GetDriveType возвращает DRIVE_REMOTE (= 4),
то можно быть уверенным, что диск физичекси с другого компа?

Сергей.


* Origin: Demos online service (2:5020/400)


Re: O ActiveX DLL

From: "Sergey Merzlikin"

> >> Тоже плохо. Человек может юзать прогу с собственного
расшаренного диска.
> >
> > А зачем ему это разрешать? В конце концов и этот случай можно
детектировать,
> > и сделать исключение, но, по-моему, это лишнее.
>
> Что-то я не понял. Т.е. GetDriveType возвращает DRIVE_REMOTE (= 4)
> не только для чужих компов, но и для собственного расшаренного харда?
> Как же тогда точно определить, что клиент цепляет DLL с физически ДРУГОГО
компа?

Если расшарить каталог, содержащий Dll или один из его предков, а затем на
том же компьютере подключить его как сетевой диск (в Win9x это сделать не
получится), то для этого диска GetDriveType возвратит DRIVE_REMOTE.
Естественно, для буквы самого HDD тип не изменится. Если такой извращенный
способ доступа к своему HDD предполагается использовать, специально для него
можно немного усложнить процедуру проверки, и достичь желаемого результата
(WNetGetConnection вместо GetDriveType + сравнение начала возвращенного
сетевого пути с результатом GetComputerName).



--
* Origin: Talk.Mail.Ru (2:5020/400)


Re: O ActiveX DLL

From: "Sergey Merzlikin"

> А как предполагается предотсвратить установку на более чем один
комп?
> Паролем? ;-)

Можно и так.

> Имхо в принципе путь неправильный - Сергею нужно защитьу от многократного
> использования, а ты предлагаешь по сути защиту от HСК.

Я предложил несколько вариантов. Этот предполагал, что программу установки
запускает только лично он сам. Кстати, от чего он защищается, мне так до
коца и не ясно. Если это защита от превышения технических возможностей самой
Dll, можно попробовать поискать решение, снимающее это ограничение.

> Hе говоря уже о том, что имя компьютера может и поменяться.

Переустановить. Любая защита предполагает некоторый элемент неудобства.




--
* Origin: Talk.Mail.Ru (2:5020/400)


Re: O ActiveX DLL

From: "Sergei Ho"

From: "Sergey Merzlikin"
Newsgroups: fido7.ru.visual.basic
Sent: Sunday, August 15, 2004 3:15 PM
Subject: Re: O ActiveX DLL


>> >> Тоже плохо. Человек может юзать прогу с собственного
> расшаренного диска.
>> >
>> > А зачем ему это разрешать? В конце концов и этот случай можно
> детектировать,
>> > и сделать исключение, но, по-моему, это лишнее.
>>
>> Что-то я не понял. Т.е. GetDriveType возвращает DRIVE_REMOTE (= 4)
>> не только для чужих компов, но и для собственного расшаренного харда?
>> Как же тогда точно определить, что клиент цепляет DLL с физически ДРУГОГО
> компа?
>
> Если расшарить каталог, содержащий Dll или один из его предков, а затем на
> том же компьютере подключить его как сетевой диск (в Win9x это сделать не
> получится), то для этого диска GetDriveType возвратит DRIVE_REMOTE.
> Естественно, для буквы самого HDD тип не изменится. Если такой извращенный
> способ доступа к своему HDD предполагается использовать, специально для него
> можно немного усложнить процедуру проверки, и достичь желаемого результата
> (WNetGetConnection вместо GetDriveType + сравнение начала возвращенного
> сетевого пути с результатом GetComputerName).

Я понял, спасибо.
Думаю, такое использование папки на своем компе -- это извращение
и его можно в расчет не брать. Hе могу придумать разумного довода,
чтобы так юзать диск.

Сергей.


* Origin: Demos online service (2:5020/400)


Obfuscate для VBA Word

From: "Sergei Ho"

Кто-нибудь может посоветовать Obfuscate для VBA кода в Word?

Сергей


* Origin: Demos online service (2:5020/400)



Назад Содержание Вперед