Вопрос: имя жеского диска и серийный номер | Добавлено: 09.08.06 17:08 |
Автор вопроса: ![]() |
Ответы | Всего ответов: 24 |
Номер ответа: 16 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 9 |
Профиль | Цитата | #16 | Добавлено: 11.08.06 10:30 |
Вот привязал к данным из реестра
а хочется и к номеру HDD. #COMPILE EXE #DIM ALL #INCLUDE "WIN32API.INC" '#Compile Dll 'Function PbLibMain ' [...] 'Function = 1 'End Function %HK=%HKEY_LOCAL_MACHINE FUNCTION GetSetting(BYVAL AppName AS STRING, BYVAL Key AS STRING, BYVAL DEFAULT AS STRING) AS STRING LOCAL hKey AS LONG LOCAL Result AS LONG LOCAL KeyType AS LONG LOCAL Buffer AS STRING * 2048 LOCAL SIZE AS LONG ' ** Exit is AppName, Section or Key are null IF (LEN(AppName) * LEN(Key)) = 0 THEN FUNCTION = DEFAULT EXIT FUNCTION END IF ' ** Open the section IF RegOpenKeyEx(%HK, ""+AppName+"", 0, %KEY_ALL_ACCESS, _ hKey) <> %ERROR_SUCCESS THEN FUNCTION = DEFAULT EXIT FUNCTION END IF ' ** Get the key value SIZE = SIZEOF(Buffer) Result = RegQueryValueEx(hKey, Key+CHR$(0), 0, KeyType, Buffer, SIZE) ' ** Close the registry RegCloseKey hKey ' ** Exit if not successful or nothing there IF (Result <> %ERROR_SUCCESS) OR (SIZE = 0) THEN FUNCTION = DEFAULT EXIT FUNCTION END IF ' ** Return the data IF KeyType = %REG_SZ THEN FUNCTION = LEFT$(Buffer, SIZE - 1) ELSE FUNCTION = LEFT$(Buffer, SIZE) END IF END FUNCTION '----------------------------------------------------------------------------- ' GetSetting - Retrieves application entry in the Windows registry. ' Syntax: ' Value = GetSetting(AppName, Section, Key) ' Where: ' AppName = String expression containing the name of the application. ' Section = String expression containing the name of the section where the ' key setting is being saved. ' Key = String expression containing the name of the key setting being ' saved. ' ![]() ' Returns: ' Value = Value from the registry. If the value is DWORD, use the CVL() ' or CVDWD() functions to convert from string to numeric. !!!!!!!!!! FUNCTION PBMAIN () AS LONG DIM Value AS STRING '* 2048 DIM ValueVse AS STRING DIM aa AS STRING DIM bb AS STRING DIM dd AS STRING DIM ii AS INTEGER DIM pigg AS INTEGER DIM kodBios AS INTEGER 'для WIN 98 aa = "HARDWARE\DESCRIPTION\System\CentralProcessor\0" bb = "Enum\Root\*PNP0C01\0000" Value = GetSetting(aa , "VendorIdentifier", "kjkj" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) Value = GetSetting(aa , "Identifier", "treg" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) Value = GetSetting(bb , "BIOSDate", "vbxcvb" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) Value = GetSetting(bb , "BIOSName", "sdsad" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) Value = GetSetting(bb , "BIOSVersion", "vbbbbc" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) Value = GetSetting(bb , "CPU", "konec98" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) 'для WIN 2000 --------------------------------------------- aa = "HARDWARE\DESCRIPTION\System\CentralProcessor\0" dd = "HARDWARE\DESCRIPTION\System" Value = GetSetting(aa, "ProcessorNameString", "privet" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) Value = GetSetting(aa, "Identifier", "privet" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) Value = GetSetting(aa, "VendorIdentifier", "sonvbn" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) Value = GetSetting(dd, "SystemBiosDate", "sbvnnhlen" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) Value = GetSetting(dd, "SystemBiosVersion", "yutrh" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) Value = GetSetting(dd, "VideoBiosDate", "fgjf" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) Value = GetSetting(dd, "VideoBiosVersion", "fghytu" ![]() MSGBOX Value ValueVse= ValueVse + TRIM$(Value) MSGBOX ValueVse MSGBOX STR$(LEN(ValueVse)) FOR ii=1 TO LEN(ValueVse) pigg = ASC(MID$(ValueVse, ii, 1)) IF pigg > 26 AND pigg <= 128 THEN kodBios = kodBios + (pigg * 125.56 + pigg * 34.8 + pigg * 554/37) MOD 322.23 END IF NEXT ii MSGBOX " "+STR$(kodBios)+$CRLF+"Отправьте этот код"+$CRLF,,"<>" END FUNCTION |
Номер ответа: 17 Автор ответа: ![]() ![]() ![]() Вопросов: 6 Ответов: 171 |
Профиль | Цитата | #17 | Добавлено: 11.08.06 16:53 |
JMP-помоему твой код выводит метку тома, и она меняется при каждом форматировании, это мне не подходит
В моем коде я вызываю АПИ которое возвращает Serial number, советую почитать MSDN. Как его узучать???
Самая полная информация на оффициальном сайте. В форуме можно найти практически ВСЕ. Там же и куча бесплатных примеров для готовых решений. |
Номер ответа: 18 Автор ответа: ![]() ![]() ![]() Вопросов: 6 Ответов: 171 |
Профиль | Цитата | #18 | Добавлено: 11.08.06 23:20 |
Блин есть здесь какой нибудь способ редактировать
свои предыдущие посты ? JMP-помоему твой код выводит метку тома, и она меняется при каждом форматировании, это мне не подходит
Все правильно <<сериал номер>> назначеный системой после формата но не метку (имя) Все таки не понял, зачем hardware S/N ? Если кто то знает как поменять/перехватить этот номер, с таким же успехом перехватят и hardware номер, по поводу защиты по привязке к реестру. Вы же прекрасно знаете как легко установить хуки на жизнено важные АПИ, или просто просмотреть реестровским трэкером. |
Номер ответа: 19 Автор ответа: ![]() ![]() ![]() Вопросов: 6 Ответов: 171 |
Профиль | Цитата | #19 | Добавлено: 11.08.06 23:30 |
По моему для защиты лучше всего применять аппараные плаги. Любой дешевый микроконтролер обеспечивает связь с СОМ портом (можно пойти дальше на рынке навалом готовых и красивых USB,COM,LPT плагов с поддержкой шифрования протокола обмена) зашить в него жизненоващные точки входов в функции а можно и целиком важные функции и востанавливать их с контролера, переодически меняя на правильные и неправильные значения, чтоб не дампнули образ памяти и получили готовенькое. Протокол обмена с котролером тоже лучше зашифровать.
Такие системы как правило пытаються ломать только в случае если ну уж очень дорогой софт. А все эти програмные средства привязки только делают неодобства пользователю ИМХО так как даже армагидилу и ту ломают. |
Номер ответа: 20 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #20 | Добавлено: 12.08.06 00:05 |
И вместе с ПО поставлять свой микроконтроллер? ![]() |
Номер ответа: 21 Автор ответа: ![]() ![]() ![]() Вопросов: 6 Ответов: 171 |
Профиль | Цитата | #21 | Добавлено: 12.08.06 01:13 |
И вместе с ПО поставлять свой микроконтроллер?
![]() А в чем проблема? его в корпус разьема запихать можно запросто (если разговор идет о единичных продажах), а вообще есть готовые цивильно оформленные плаги если разговор идет о массовой продаже ПО. при массовых закупках он будет обходиться в пределах 0.5-8 баксов в зависимости от наворотов. |
Номер ответа: 22 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #22 | Добавлено: 12.08.06 01:56 |
ну прогу для перехвата сигнала с пентагоновского спутника может и имеет смысл поставлять со своей железкой, в принципе подобные проги и поставляются с железками. Но на рынке ПО таких прог нет, и слава богу.. |
Номер ответа: 23 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 204447456 Вопросов: 180 Ответов: 4229 |
Web-сайт: Профиль | Цитата | #23 | Добавлено: 12.08.06 16:26 |
Это он про шевеление извилинами
![]() Ну если механическая, то скорей всего ушами ![]() |
Номер ответа: 24 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #24 | Добавлено: 12.08.06 20:51 |
Уши, напрямую законнекченные с извилинами? Жестко. |
|