Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Путь к файлу, ? 
:(
    Опции темы
ArtNeoX
Дата 18.2.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 23.10.2005

Репутация: нет
Всего: нет



Проверить наличие файла.
If Dir("Files/Base.mdb") <> "" Then GoTo XXX200 ' если файл Base.mdb в папке Files есть то переход на строку xxx200

а как проверить наличие файла в папке Windows/system32
если заранее не знаешь на каком диске папка Windows/system32
и windows может быть установлена в папку не по умолчанию (windows), а например в папку winxp

PM MAIL   Вверх
Тутанхамец
Дата 18.2.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



Есть API-шные функции GetWindowsDirectory и GetSystemDirectory. Они возвращают пути к папке винды и к ее системной папке.
PM MAIL   Вверх
ArtNeoX
Дата 18.2.2006, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 23.10.2005

Репутация: нет
Всего: нет



smile
PM MAIL   Вверх
Akina
Дата 18.2.2006, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Код

environ("windir")



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Тутанхамец
Дата 18.2.2006, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



А нате вам! smile

Функции API - это дикая куча (больше двух тысяч) функций, поставляемых вместе с Windows в ее DLL.

Поскольку функции эти внешние для VB-шной проги, то их надо объявить оператором Declare. Приблизительно так:

Код

Public Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long


Выше объявляется функция GetSystemDirectory из библиотеки kernel32 (версия для ANSI). Подробнее про синтаксис Declare - погляди где-нибудь в книжках, хэлпах или, думаю, даже на этом форуме найдется.

Чтоб ты каждый раз не парился с этими Declare, разработчики вижл-бейсика уже объявили все возможные функции и упрятали их объявления в текстовый файл, который поставляется вместе с VB. Там еще виндосовские типы данных и константы.

В поставку VB6 (и VB5, и VB4...) входит прога API Viewer (посмотри в папке VB6 в меню "Программы2 кнопки "Пуск"). Запусти, нажми File->Load Text File и выбери win32api.exe. Там все функции API на момент издания VB6. С тех пор их, думаю, прибавилось, но для начала тебе хватит. Щелкни на функцию в списке, появится ее Declare. Находишь те объявления функций, которые тебе нужны, жмешь кнопку Copy и вставляешь их в модуль своей проги.

Самое главное - знать, что делает каждая из этих функций (тут иронично smile ). Их описания можно найти в MSDN. А можешь набрать функцию в поисковой строке браузера и посмотреть, что найдется.

А теперь пример. Узнаем системную директорию Винды:

Код


'объявляем функцию, находящуюся во внешней DLL

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long


Private Sub Command1_Click()
'строка-буфер, куда запишется интересующий нас путь
Dim s As String 
'заполянем ее нулями. Их 255, так как это максимальная длина пути
s = String(255, 0) 
'вызываем функцию, объявленную в Declare, передаем ей буфер и его длину. Больше, чем переданная длина, функция вернуть не должна. 
GetSystemDirectory s, 255 
's = s + "\" 'можешь отремить, чтоб добавить слэш в конце пути
MsgBox (s) собственно путь...

End Sub


Таким вот образом. smile
Добавлено @ 21:35
Akina, ты меня сделал! smile Твоё, ясен пень, короче! smile
PM MAIL   Вверх
ArtNeoX
Дата 19.2.2006, 06:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 23.10.2005

Репутация: нет
Всего: нет



а создать там файл?

Код

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long    

Private Sub Command1_Click()    
Dim s As String    
s = String(255, 0)    
GetSystemDirectory s, 255    

If Dir("s/!!!!.dll") <> "" Then
Open "s/!!!!.dll" For Input As #1
Dim str As String
Input #1, str
Close #1
Else
Dim name As String
name = "Microsoft Windows"
Open Dir("s/!!!!.dll") For Output As #1
Print #1, name
Close #1
End If
End Sub


не работает.
PM MAIL   Вверх
Тутанхамец
Дата 19.2.2006, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



Код

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Private Sub Form_Load()
Dim s As String
Dim i As Long
s = String(255, Chr(0))  'строку мы забили нулями. ТАМ ТЕПЕРЬ 255 НУЛЕЙ!
i = GetSystemDirectory(s, 255) 'Теперь строка НАЧИНАЕТСЯ с пути, 
'а оставшееся место в ней всё равно забито НУЛЯМИ

 'но GetSystemDirectory может вернуть количество реально скопированных символов, то есть длину пути
'поэтому обрубаем s

s = Left(s, i)
s = s + "\myfile.txt" 'дописываем слэш и имя файла

Open s For Output As #1
Print #1, "tram-pam-pam!.."
Close #1
End Sub



Интересно, что ты пытался сказать вот этим...

Код

If Dir("s/!!!!.dll") <> "" Then


. smile

Это сообщение отредактировал(а) Тутанхамец - 19.2.2006, 16:48
PM MAIL   Вверх
DrBoom
Дата 19.2.2006, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



А модуль FSO(File System Object) не пробывал использывать... smile
PM MAIL ICQ Jabber   Вверх
Akina
Дата 19.2.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



ArtNeoX, что именно не работает? поконкретнее плиз.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ArtNeoX
Дата 20.2.2006, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 23.10.2005

Репутация: нет
Всего: нет



Как системную директорию определить я понял.
А как сосдать туда файл и проверить наличие определенного файла в системной папке.

Смысл вот в чем.

1. Пользователь запускает отдельную программу которая определяет системную папку и проверяет наличие там файла xxx.txt
Если он там есть, то программа завершает работу, если его там нет файл с таким именем будет создан.
2. Пользователь запускает программу. Программа определяет системную папку и проверяет наличие там файла xxx.txt
Если он там есть, программа запустится, если его там нет программа не запускается.

То есть это такой способ защиты от копирования твоих трудов.
PM MAIL   Вверх
kulibin
Дата 20.2.2006, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



не понял в чём проблема - ты же сам в первом посте писал это - токо путь был литералом записан - а ты его переменной напиши
узнаёш апишной функцией путь к систему - и дальше как обычно
или я что-то пропустил?
PM MAIL WWW ICQ   Вверх
kulibin
Дата 20.2.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



прикольную штуку Akina подсказал - я до этого был не в курсе smile
вот чего в мсдн на эту тему нашел:
Код

Private Sub Command1_Click()
txt = txt & Environ("NUMBER_OF_PROCESSORS") & vbNewLine
txt = txt & Environ("PROCESSOR_ARCHITECTURE") & vbNewLine
txt = txt & Environ("PROCESSOR_IDENTIFIER") & vbNewLine
txt = txt & Environ("PROCESSOR_LEVEL") & vbNewLine
txt = txt & Environ("PROCESSOR_REVISION") & vbNewLine
txt = txt & Environ("OS") & vbNewLine
txt = txt & Environ("COMSPEC") & vbNewLine
txt = txt & Environ("HOMEDRIVE") & vbNewLine
txt = txt & Environ("HOMEPATH") & vbNewLine
txt = txt & Environ("PATH") & vbNewLine
txt = txt & Environ("PATHEXT") & vbNewLine
txt = txt & Environ("PROMPT") & vbNewLine
txt = txt & Environ("SYSTEMDRIVE") & vbNewLine
txt = txt & Environ("SYSTEMROOT") & vbNewLine
txt = txt & Environ("WINDIR") & vbNewLine
txt = txt & Environ("TEMP") & vbNewLine
txt = txt & Environ("TMP")
End Sub

а вот результат выполнения суперпрограммы:
Цитата

1
x86
x86 Family 6 Model 8 Stepping 1, AuthenticAMD
6
0801
Windows_NT
C:\WINDOWS\system32\cmd.exe
C:
\Documents and Settings\Îëåã Àíåä÷åíêî
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\dcd;C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\VC98\bin
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH

C:
C:\WINDOWS
C:\WINDOWS
C:\DOCUME~1\8A95~1\LOCALS~1\Temp
C:\DOCUME~1\8A95~1\LOCALS~1\Temp

меня пропёрло smile
Akina - ты если ещё такое что знаеш - то колись давай smile
PM MAIL WWW ICQ   Вверх
Тутанхамец
Дата 21.2.2006, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



Могу подсказать еще один простенький способ защиты трудов. При установке своей проги записывай в файл серийный номер диска. А защищаемый труд при запуске проверяет - если этот файл есть и в нём действительно записан номер диса, то запускаемся, а если нет - то и суда нет, и запускаться не будем. Так можно привязать своё творение к конкретному диску. И нет особой нужды писаться в системную папку. А то XP и 2000 не всегда дают это сделать, если, скажем, ты вошёл под "юзером".

Для получения номера диска - APIшная GetVolumeInformation.

P.S. Нда, environ, оказывается, прикольная штука... smile Кстати, а переменные среды железно определены? Во всех версиях винды? Всегда-всегда?

Это сообщение отредактировал(а) Тутанхамец - 21.2.2006, 08:24
PM MAIL   Вверх
Akina
Дата 21.2.2006, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Мониторинг изменений на диске и в реестре - и твоя защита отдыхает.

Цитата(kulibin @ 20.2.2006, 23:33 Найти цитируемый пост)
вот чего в мсдн на эту тему нашел

а MSDN вообще полезно проматривать smile что же до твоей суперпрограммы, то можно просто Пуск-Выполнить-CMD-Set<Enter>

Цитата(Тутанхамец @ 21.2.2006, 09:19 Найти цитируемый пост)
переменные среды железно определены? Во всех версиях винды? Всегда-всегда?

Некоторые - да. Но их можно изменить - причем в локальном сеансе, дабы не нарушить работоспособности системы. Остальные создаются программами и сервисами конкретной системы и на другой могут отсутствовать.
Для получения тех же данных, но "заведомо верно", лучше исользовать WMI.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kulibin
Дата 21.2.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



Цитата(Akina @ 21.2.2006, 09:11 Найти цитируемый пост)
а MSDN вообще полезно проматривать  что же до твоей суперпрограммы, то можно просто Пуск-Выполнить-CMD-Set<Enter>

Про мсдн согласен smile. темболее что она у меня на диске - к vs98 - токо я её пока не сильно понял smile.
Я имелл ввиду, что к чему-то из этого тоже привязываться можно - к параметрам процессора например + ещё что-то(как самостоятельный вариант не рекоммендую).

Цитата(Тутанхамец @ 21.2.2006, 08:19 Найти цитируемый пост)
Для получения номера диска - APIшная GetVolumeInformation

Чи не функция smile - в барсике и без неё можно. Библиотека скриптинг рантайм, объект драйв вроде. Свойство сериалнамбер. И апи и этот метод выдают номер, который вроде виндой прописывается - что-то такое. Суть в том, что это не есть оригинальный заводской серийник винта и он меняется при переустановке винды smile - второй год мучаюсь с етой какой smile - приходится людям верить на слово (а я с клиентами токо по телефону общаюсь - они иногородние все у меня).
Но годится вообще то - как вы поняли я сам активно пользую smile - но постоянно думаю как по другому сделать.


PM MAIL WWW ICQ   Вверх
Тутанхамец
Дата 21.2.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



Насчет того, что это не заводской номер винта - так я в курсе. smile

Кто-то мне говорил, что в российских широтах заводских номеров на винтах практически нет, хотя, как это аргументировалось - не помню...


PM MAIL   Вверх
Akina
Дата 21.2.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(kulibin @ 21.2.2006, 13:37 Найти цитируемый пост)
это не есть оригинальный заводской серийник винта и он меняется при переустановке винды

Есть серийный номер винта (железки), который хранится на контроллере либо на технологической дороге, и есть номер тома, который создается при форматировании и хранится в бут-секторе.

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kulibin
Дата 21.2.2006, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



А вот этот гляньте файлик. Я так понял что он наверное железячный хдд определяет.

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  HDD.zip 6,01 Kb
PM MAIL WWW ICQ   Вверх
Akina
Дата 21.2.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(kulibin @ 21.2.2006, 14:24 Найти цитируемый пост)
он наверное железячный хдд определяет

да.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Тутанхамец
Дата 21.2.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



Почему??

При установке создаю файл с этим номером. Если номер и содержимое файла совпадают - прога идёт.

Если кто-то тащит прогу на другой комп или другой винт, то этот номер там другой, и прога, - как ей и полагается, - не идёт. Это проверено многократно.

То, что он меняется при переустановке винды - ну и ладно. Прогу ведь так и так переустанавливать.

По-моему так. Или?..
PM MAIL   Вверх
kulibin
Дата 21.2.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



Цитата(Тутанхамец @ 21.2.2006, 13:27 Найти цитируемый пост)
Это проверено многократно

У меня тоже многократно проверено smile Да и диски тоже не вечны smile

Цитата(Akina @ 21.2.2006, 13:26 Найти цитируемый пост)
Цитата(kulibin @ 21.2.2006, 14:24 )
он наверное железячный хдд определяет

да.

Краткость - сестра таланта smile. Можно подробнее немного? Правда железячный? не будет меняться при переустановке винды?

PM MAIL WWW ICQ   Вверх
Тутанхамец
Дата 21.2.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6




Цитата

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



Цитата

У меня тоже многократно проверено  Да и диски тоже не вечны


Вот я и думаю - то ли Акина не прав, то ли он знает что-то чего мы не знаем и тогда мы юзаем какую-то лажовую защиту... smile Первый вариант мне больше нравится... smile
PM MAIL   Вверх
Akina
Дата 21.2.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(kulibin @ 21.2.2006, 14:32 Найти цитируемый пост)
Правда железячный? не будет меняться при переустановке винды?

Ну разберись в коде-то! сериал получается через CreateFile/DeviceIOControl. Если открывать том - получишь сериал второго рода, изменяемый. Если открывать девайс (который безотносителен к томам - да на нем может вообще не быть разделов) - получишь сериал первого рода, для изменения которого нужно как минимум переписывать микрокод контроллера или технологическую область винта.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kulibin
Дата 21.2.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



Цитата(Akina @ 21.2.2006, 13:57 Найти цитируемый пост)
Ну разберись в коде-то!

Та, блин, для меня что апи - что китайская грамота.
Я правда потихоньку листаю и очень заинтересовался как месяц где-то - но валянок пока полный.

Нате вам тут ещё мак-адрес smile - знаю что интересуются им многие. Ну токо к этому делу привязываться можно токо если машина в сети. Я вообще-то думал что есть сетевуха - есть и мак-адрес. Но когда у меня машина не была в сети оно нули выдавало. Я думал что код лажовый. А щас у меня адсл-модем стоит - и определяется адрес не нулёвый.



Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  mac_hdd.zip 4,15 Kb
PM MAIL WWW ICQ   Вверх
Akina
Дата 21.2.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(kulibin @ 21.2.2006, 15:21 Найти цитируемый пост)
для меня что апи - что китайская грамота

ну и что? или ты на всю голову деревянный? ничего, освоишься... все там были...

Цитата(kulibin @ 21.2.2006, 15:21 Найти цитируемый пост)
мак-адрес  - знаю что интересуются им многие. Ну токо к этому делу привязываться можно токо если машина в сети. Я вообще-то думал что есть сетевуха - есть и мак-адрес.

МАС-адрес - это характеристика интерфейса, связывающая 2 и 3 уровни OSI. Нет 3 уровня - МАС не требуется. То есть он у реальной железки есть, и его даже можно добыть при неинициализированном интерфейсе на адаптере (опять-таки через WMI) - но был бы в том смысл...

PS. В принципе любая защита (даже самая заумная) легко объезжается при наличии легальной инсталляции. И самый простой imho метод - виртуализация вычислительной среды. Electronically tested.





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kulibin
Дата 21.2.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



Цитата(Akina @ 21.2.2006, 14:31 Найти цитируемый пост)
Цитата(kulibin @ 21.2.2006, 15:21 )
для меня что апи - что китайская грамота

ну и что? или ты на всю голову деревянный?

дык это . . . - нет вроде smile осваиваюсь - токо за час не получится - а так осваиваюсь

Цитата(Akina @ 21.2.2006, 14:31 Найти цитируемый пост)
виртуализация вычислительной среды. Electronically tested.

да уж - своей электроникой не проверял - но такое высказывание часто слышал.
Поэтому надо несколько привязок и ещё свои файлики со своим серийником. Т.е. в случае если меняется железо чтобы с программы можно было списать старую и новую конфигурацию + наличие етого своего ключа никчему не привязанного - и уже самому решать по этой информации - делать повторную регистрацию - или не надо - при контакте с клиентом личным (в моём случае это телефон или мыло smile).
Тоже не идеально - идеально и не бывает.
Ех - надо у себя заняться модернизацией smile.
А ещё вот вам модуль для запуска программы из оперативной памяти - есть такой парень SCINER - у него на сайте лежит оно - чей копирайт не знаю smile
http://sciner.freewm.net/runner.zip
Оно читает файл как двоичные данные и запускает под именем другого - так и видно его в диспетчере задач. Надо его приспособить под запуск программы для защиты из зашифрованных ресурсов - расшифровывать при запуске, грузить в память и запускать под видом например svсhost.exe - и им уже проверять все ключи и т.п. Токо нет пока мыслей как обратную связь безопасно наладить smile.
Так по идее надёжность повысится и сложность взлома тоже. Что скажете?
Добавлено @ 15:07
Цитата(Akina @ 21.2.2006, 14:31 Найти цитируемый пост)
МАС-адрес - это характеристика интерфейса, связывающая 2 и 3 уровни OSI. Нет 3 уровня - МАС не требуется. То есть он у реальной железки есть, и его даже можно добыть при неинициализированном интерфейсе на адаптере (опять-таки через WMI) - но был бы в том смысл...

Почему же нет? Щас у всех сетевухи стоят. Токо не у всех они используются. А вот летят они гораздо медленнее винтов - а может и вообще не летают smile. А что это за страшное слово WMI? Как сделать то чтобы можно было определить мак-адрес на простаивающей сетевухе?
Вижу с Akina можно много интересных вещей натрусить. Токо надо повыше его поднять и посильнее трусить smile
PM MAIL WWW ICQ   Вверх
Akina
Дата 21.2.2006, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(kulibin @ 21.2.2006, 16:01 Найти цитируемый пост)
Почему же нет? Щас у всех сетевухи стоят

Найди-ка ты описание модели OSI/ISO (где-нить на русдоках) и почитай... только с карандашиком, внимательно, и лучше разика 3-4, да в разных вариантах...

Цитата(kulibin @ 21.2.2006, 16:01 Найти цитируемый пост)
Как сделать то чтобы можно было определить мак-адрес на простаивающей сетевухе?

Будешь читать - постарайся самостоятельно понять разницу между МАС-адресом сетевой карты и содержимым переменной в памяти ОС, где хранится копия этого МАС-адреса. Особенно КОГДА наконец требуется это копирование выполнять и почему оно раньше не было нужно.

Цитата(kulibin @ 21.2.2006, 16:01 Найти цитируемый пост)
что это за страшное слово WMI

Windows Management Instrumentation. Такой кусок операционной системы, который... впрочем MSDN рассказывает лучше меня. Но через это дело можно добраться в почти любой закоулок как ОС, так и железа, на котором эта ОС крутится.






--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kulibin
Дата 21.2.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



да уж - перестал понимать и то, что думал что понимаю smile ну ок - полистаю
PM MAIL WWW ICQ   Вверх
cardinal
Дата 21.2.2006, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



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


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
СВА
Дата 22.2.2006, 05:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 9.1.2006

Репутация: нет
Всего: нет



Я так понял речь идет о том как защитить программу от копирования.
Лично я делал так,у каждой дискеты тоже есть свой код (как и на HDD) так вот этот код записываеться в определенный файл на той же дискете, только в зашифрованом виде. Также на дискете саздается любой файл не носящий информационную нагрузку, или можно использовать тот самый файл где хранится предыдущий код и записывается в него его дата создания (файла) тоже в зашифрованом виде.
принцип работы таков при попытке копировать дискету меняется код дискеты, а также в большенстве случаев и дата создания файла. Для проверки на вшивость, просто сравниваются реальные параметры с параметрами записанные в файле.
Единственный недостаток это то что приходится возиться с дискетами.
PM MAIL   Вверх
СВА
Дата 23.2.2006, 04:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 9.1.2006

Репутация: нет
Всего: нет



Вся эта защита будет обсолютно бесполезна если при выводе сообщения, о том что программа не заегистрирована, текст этого сообщения будет хранится в программе, лучше всего их загружать из отдельного файла, или из ресурса. Дело в том что при взломе программы ищутся как раз эти тесктовые сообщения, потом на них ставяться стоп-точки и т.д. всю технику взлома не помню.
PM MAIL   Вверх
ArtNeoX
Дата 23.2.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 23.10.2005

Репутация: нет
Всего: нет



Вопрос в том, как програмно определить системную папку, (програмкой Crack) создать там какой нибудь файл (например 123.txt)
А при запуске основной программы, она определяла системную папку, проверяла там наличие созданного програмкой crack файла 123.txt и при его наличии программа запускалась, а при отсутствии выдавалось какое либо сообщение, типа программа не зарегистрирована или что то типа того и завершала работу.
PM MAIL   Вверх
Тутанхамец
Дата 23.2.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



Хех, дружище, а мы тут по твоему о чём рядим?.. smile Посмотри самое начало темы - там же есть коды!
PM MAIL   Вверх
kulibin
Дата 23.2.2006, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



Вобщем загрузили парня smile.
Думаю ему лучше будет начать защищать свои программы с такого способа:

Код

Sub CheckRegistration()
Dim fso As FileSystemObject 'todo: добавить к проекту референс на
'Microsoft Scripting Runtime. В сетуп её включать думаю не обязательно -
'по идее она у всех должна быть
Dim DriveNumber As String
Set fso = New FileSystemObject
Dim dr As Drive
Set dr = fso.GetDrive("C")
' был правда у меня один случай, когда на клиентской машине такого
' диска не было :) - один только раз в жизни такой прикол видел :)

DriveNumber = dr.SerialNumber
' при переустановке винды будет он меняться - но ничего - это не часто бывает :)
' хотя попадаются иногда любители ежедневно винду переустанавливать :)
Dim strPSV As String
Dim x As Long
For x = 1 To Len(drN)
    strPSV = strPSV & Asc(Right(drN, x))
Next x
' очень тупой метод шифрования :) - можеш заменить чем то получше - однако
' не советую заменять тем, чего сам не понимаеш - чревато :) - сам так не
' раз попадал :)
Dim k As Long 'количество запусков программы
k = CLng(GetSetting("SYS_SETTINGS", "KEY1", "VAL2", 0))
If strPSV = GetSetting("SYS_SETTINGS", "KEY1", "VAL1") Then
    frmMainForm.Show
ElseIf k < 50 Then
' на 50 запусков программы демка :)
    k = k + 1
    SaveSetting "SYS_SETTINGS", "KEY1", "VAL2", CStr(k)
    frmMainForm.Show
Else
    frmReg.Show 1
End If
'ну регистрация так же - токо программа показывает номер диска (frmReg)- ты его шифруеш и
'присылаеш его как ключик. Они его пишут - программа его проверяет и если подходит
'он - то пишет в реестр - так же как и здесь при проверке
End Sub



Простенько - но от чайников с накипью вполне нормально защитит. Если программа не дорогая - то на этом можно и остановиться.
Наслаждайся smile. Как говорят некоторые буржуи - фил фрии ту юз зис коуд smile smile smile
ой - ой - ой - сам себя насмешил smile - не обращайте внимания - я дома сам работаю - и сам с собой начал разговаривать в последнее время smile - одичал совсем smile
PM MAIL WWW ICQ   Вверх
ArtNeoX
Дата 23.2.2006, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 23.10.2005

Репутация: нет
Всего: нет



как определить системную папку, создать там файл, проверить его наличие там и удалить - я разобрался.
а вот как сделать что бы после 10 запуска программы удалился созданный файл из системной папки.
PM MAIL   Вверх
kulibin
Дата 23.2.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



ну ты даёш, дружище! я тебе готовую защиту выложил - с комментариями, всё рабочее. С количеством запусков тоже. Ничем не хуже твоей что ты щас паришся. Думаю лучше всё же - реестр менее доступен для ламеров чем папка эта.
пиши, блин в файл другой количество запусков - или в реестр - а как же ещё?
PM MAIL WWW ICQ   Вверх
ArtNeoX
Дата 24.2.2006, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 23.10.2005

Репутация: нет
Всего: нет



kulibin, ты крут... а куда сохраняется количество оставшихся запусков?
Как можно сделать чтобы программа перестала работать, например после 01.05.2006 года.

PM MAIL   Вверх
kulibin
Дата 24.2.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

Репутация: 2
Всего: 3



Цитата(ArtNeoX @ 24.2.2006, 08:57 Найти цитируемый пост)
kulibin, ты крут

тут я с тобой согласен smile

Цитата(ArtNeoX @ 24.2.2006, 08:57 Найти цитируемый пост)
а куда сохраняется количество оставшихся запусков?

Ну батенька, это уж куда сделаеш - туда и будет сохраняться. Или ещё файл один или в реестр. Не понимаю вообще что не ясно. Не знаеш чтоли как в файл писать/читать? Читай книжку и не борзей: лень ему видите ли с книги две строчки кода переписать.
А теперь самое интересное - про дату. Сложность в том, что дату можно на машине менять - и для того, чтобы программа об этом узнала (а это единственное что можно узнать - если дата менялась - то настоящую определить никак нельзя) нужно писать куда-то дату последнего запуска. Т.е. программа при запуске должна сравнивать текущую дату с датой прошлого запуска - и если дата прошлого запуска больше текущей - значит текущая левая (переведены часы). А что дальше делать - сам решай. Или заканчивать демо-версию или считать её уже не по датам а по запускам. Я делаю так: если часы не переведены - то пишется дата текущая(которая при следующем запуске программы будет датой прошлого запуска). А если часы отводились - то пишется прошлая дата+1 день.
Есть ещё вариант попроще: писать только запуски - и смотреть время непосредственно по часам. Т.е. в этом случае если часы переведут - то всёравно когда будет превышен лимит по запускам программа работать перестанет. Ну может немного продлят демку.
И ещё одно: если ориентироваться на количество запусков и дату - надо подстраховать себя от удаления этой информации. Я делаю так: допустим демка ограничена 100 запусками. На 20-м запуске я пишу ещё файлик один - или в него что-то левое сую или вообще пустой. Т.е. если программа смотрит что нет данных о запусках - или они меньше 20-ти - проверяем наличие этого файла. Если он есть - значит нас пытаются нагреть. Если нету - всё ок.

Ну вобщем то на этом всё - не люблю помогать людям, которые ещё и ехидничать пытаются когда делаеш им добро. Как говорится - kulibin сделал своё дело - kulibin должен уходить smile. Будь здоров.


PM MAIL WWW ICQ   Вверх
Voldemar2004
Дата 24.2.2006, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Цитата(ArtNeoX @ 24.2.2006, 08:57 Найти цитируемый пост)
куда сохраняется количество оставшихся запусков?
Код
ElseIf k < 50 Then    
' на 50 запусков программы демка :)    
    k = k + 1    
    SaveSetting "SYS_SETTINGS", "KEY1", "VAL2", CStr(k)    
    frmMainForm.Show    
Else
Цитата(ArtNeoX @ 23.2.2006, 21:08 Найти цитируемый пост)
а вот как сделать что бы после 10 запуска программы удалился созданный файл из системной папки.
Системная папка:
Код
environ("windir")
Удалить файл:
Код
Dim fso As New FileSystemObject
fso.DeleteFile ("путь к системной папке\твой_файл")

ArtNeoX, думаю, ты догадался, как удалить файл после 10-го запуска?


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.2327 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.