привязка к железу

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

привязка к железу

Сообщение TiG » 16.02.2010 (Вт) 11:13

подскажите пожалуйста как определить номер процессора?
Все мои игрушки мама разметало ураганом...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: привязка к железу

Сообщение Antonariy » 16.02.2010 (Вт) 11:53

Порядковый? Серийный? Модельный?
Лучший способ понять что-то самому — объяснить это другому.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: привязка к железу

Сообщение jangle » 16.02.2010 (Вт) 12:20

TiG писал(а):подскажите пожалуйста как определить номер процессора?


Ассемблерная мнемоника cpuid заставит ЦП вернуть всю информацию о себе. Однако включение соответствующей опции в BIOS может запретить ему сделать это гнусное дело.

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Re: привязка к железу

Сообщение TiG » 16.02.2010 (Вт) 13:40

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

cpuid куды не тыкал не знаю как в бейсик это прописать, чтоб получить положительный результат, можешь мне чуть разжевать пожалуйста?
Все мои игрушки мама разметало ураганом...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: привязка к железу

Сообщение Хакер » 16.02.2010 (Вт) 13:41

четно говоря не знаю какой именно номер

Этим всё сказано.

В общем, этим было ясно уже изначально.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: привязка к железу

Сообщение jangle » 16.02.2010 (Вт) 13:54

TiG писал(а):честно говоря не знаю какой именно номер, уникальный наверное порядковый, с интернетом и временем траблы покопать на эту тему

cpuid куды не тыкал не знаю как в бейсик это прописать, чтоб получить положительный результат, можешь мне чуть разжевать пожалуйста?


Вставить в бейсик можно, проблема в том, что убрать из скомпилированного exe еще проще. Достаточно поиском, в любом HEX редакторе найти строку 0F A2, а потом забить ее NOP`ами 0x90. Чтобы отвязать программу от железа хватит и 30 секунд.

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Re: привязка к железу

Сообщение TiG » 16.02.2010 (Вт) 13:57

согласен, это я уже где-то прочитал, что это всё взламывается, но у меня пару защиток уже есть другого принципа
Все мои игрушки мама разметало ураганом...

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Re: привязка к железу

Сообщение TiG » 16.02.2010 (Вт) 14:01

Text1.Text = cpuid

так не работает, может у меня в биосе стоит блокировка?
Все мои игрушки мама разметало ураганом...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: привязка к железу

Сообщение Хакер » 16.02.2010 (Вт) 14:09

может у меня в биосе стоит блокировка?

Безусловно стоит. На способность думать...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Re: привязка к железу

Сообщение TiG » 16.02.2010 (Вт) 14:23

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

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Re: привязка к железу

Сообщение TiG » 16.02.2010 (Вт) 14:37

кое что откопал в инэте, номерок выдаёт, интересно какой


Dim Computer As String
Dim WMI As Variant
Dim Items As Variant
Dim Item As Variant

Private Sub Command1_Click()
Computer = "."
Set WMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
Set Items = WMI.ExecQuery("Select * from Win32_Processor")

For Each Item In Items
Debug.Print Item.ProcessorId
Text1.Text = Item.ProcessorId
Next
End Sub
Все мои игрушки мама разметало ураганом...

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: привязка к железу

Сообщение jangle » 16.02.2010 (Вт) 15:01

TiG писал(а):Text1.Text = cpuid

так не работает, может у меня в биосе стоит блокировка?


cpuid - это не функция бейсика, это мнемоника ассемблера и вызывать ее таким образом нельзя

кое что откопал в инэте, номерок выдаёт, интересно какой


Это ID процессора, но привязываться к нему бессмысленно, так как его определение отключается в BIOS или специальной утилитой

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Re: привязка к железу

Сообщение Twister » 16.02.2010 (Вт) 15:04

Достаточно поиском, в любом HEX редакторе найти строку 0F A2
Ну если бы все лепили так защиты, то нашим доблестным крякерам не осталось бы работы :) Все можно сделать гораздо мудрее и безпалевнее.

По сабжу: коды получения серийных номеров винчестера/процессора гуглятся на раз. Другое дело, что доверять такому найденному коду и тупо его копипастить не надо, не факт что этот код работает нормально. Нужно проверять самому (и желательно писАть). Я могу поделиться 100% рабочей функцией (проверенной в работе), которая получает серийный номер первого винта (IDE, SATA - не важно). Только она не на бейсике.

кое что откопал в инэте, номерок выдаёт, интересно какой
Так может сначала стоит определиться с тем, что искать и потом уже начинать поиск? :roll: Инструкцию CPUID не только можно запретить. Она вообще может не поддерживаться на целевом процессоре.
А я все практикую лечение травами...

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Re: привязка к железу

Сообщение TiG » 16.02.2010 (Вт) 15:21

поделись конечно, попробую в вб переработать)
Все мои игрушки мама разметало ураганом...

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: привязка к железу

Сообщение jangle » 16.02.2010 (Вт) 15:23

Twister писал(а):
Достаточно поиском, в любом HEX редакторе найти строку 0F A2
Ну если бы все лепили так защиты, то нашим доблестным крякерам не осталось бы работы :) Все можно сделать гораздо мудрее и безпалевнее.


Да можно. Например привязку к HardwareID флешки, когда VB программа шифруется серийником флешки по алгоритму RC1, а потом расшифровывается на лету при запуске. viewtopic.php?f=15&t=34307
Более мощной защиты от копирования, на этом форуме никто не делал. Но проблема в том, что если в руки к кракеру попадет флешка+программа, ее сдампят на раз без проблем. Даже USB - электронные ключи останавливают их не надолго. В любом случае, защита не окупит вложенных в себя средств.

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Re: привязка к железу

Сообщение TiG » 20.02.2010 (Сб) 6:32

2 Twister, в личку тебе написать, или тут поделишься?
Все мои игрушки мама разметало ураганом...

0xy
Бывалый
Бывалый
 
Сообщения: 223
Зарегистрирован: 14.06.2006 (Ср) 2:34

Re: привязка к железу

Сообщение 0xy » 20.02.2010 (Сб) 10:20

Twister писал(а):Я могу поделиться 100% рабочей функцией (проверенной в работе), которая получает серийный номер первого винта (IDE, SATA - не важно).

В каких осях тестировалось?

Diamock
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 388
Зарегистрирован: 26.10.2009 (Пн) 4:19
Откуда: Кемерово

Re: привязка к железу

Сообщение Diamock » 20.02.2010 (Сб) 17:07

Twister писал(а):Я могу поделиться 100% рабочей функцией (проверенной в работе), которая получает серийный номер первого винта (IDE, SATA - не важно). Только она не на бейсике.

Уважаемый Twister. К сообщению, я прилагаю программу определяющую серийный номер первого винчестера. Вы можете сравнить, ваш код и это программа выдают одни значения?
С уважением...
Вложения
SHDD.rar
Определение номера HDD
(22.74 Кб) Скачиваний: 273
In der Beschrankung zeigt sich erst der Meister
Графоманю...

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: привязка к железу

Сообщение jangle » 20.02.2010 (Сб) 17:56

Diamock писал(а):К сообщению, я прилагаю программу определяющую серийный номер первого винчестера. Вы можете сравнить, ваш код и это программа выдают одни значения?
С уважением...


Вот пропатченный вариант твой программы, на всех винчестерах вернет номер 0000-0000. Взлом этой "привязки к железу" занял около 50 секунд..
Мой совет не занимайтесь глупостями, и не изобретайте велосипедов с квадратными колесами.
Вложения
SHDD_пропатчен.zip
(24.21 Кб) Скачиваний: 791

Diamock
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 388
Зарегистрирован: 26.10.2009 (Пн) 4:19
Откуда: Кемерово

Re: привязка к железу

Сообщение Diamock » 20.02.2010 (Сб) 18:18

Уважаемый jangle.
Я, просто хотел узнать - этот код, получает натоящий Serial HDD, или виртуальный номер винчестера. Там абсолютно голый код без всякой защиты и привязки. :D
In der Beschrankung zeigt sich erst der Meister
Графоманю...

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: привязка к железу

Сообщение jangle » 20.02.2010 (Сб) 18:26

Diamock писал(а):Уважаемый jangle.
Я, просто хотел узнать - этот код, получает натоящий Serial HDD, или виртуальный номер винчестера. Там абсолютно голый код без всякой защиты и привязки. :D


Функция GetVolumeInformationA которую ты использовал в программе, никакого к серийному номеру диска не имеет, это серийный номер тома. Который меняется после форматирования диска или вручную. Настоящий сериал HDD можно получить только через DeviceIoControl , однако с тем же успехом может быть пропатчен.

Diamock
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 388
Зарегистрирован: 26.10.2009 (Пн) 4:19
Откуда: Кемерово

Re: привязка к железу

Сообщение Diamock » 20.02.2010 (Сб) 18:36

jangle писал(а):Функция GetVolumeInformationA которую ты использовал в программе, никакого к серийному номеру диска не имеет, это серийный номер тома. Который меняется после форматирования диска или вручную. Настоящий сериал HDD можно получить только через DeviceIoControl , однако с тем же успехом может быть пропатчен.

Уважаемый jangle! Именно это я и хотел узнать.
In der Beschrankung zeigt sich erst der Meister
Графоманю...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Re: привязка к железу

Сообщение Twister » 20.02.2010 (Сб) 21:49

и не изобретайте велосипедов с квадратными колесами
Эй, это была моя фраза! ;)

Сорри за задержку, у меня 16-го доченька родилась, забухал малость, загулял... :D

В аттаче файл, который без изменений можно прикрутить к любому delphi-проекту. Я из него кое-что вырезал, но основное не трогал. Юзайте GetDriveInfo(). По-сути, ничего такого в этом способе нет, гуглится на раз, в msdn тоже все есть. Тестировалось на всей NT-линейке начиная от w2k и кончая seven.

Настоящий сериал HDD можно получить только через DeviceIoControl , однако с тем же успехом может быть пропатчен
Может быть и пропатчен, может быть и DeviceIoControl перехвачен... Делайте защиту так, чтобы без вашего ведома программа не работала. Задействуйте шифрование, но, конечно, с умом. Это, естественно, сразу отсекает возможность предоставления клиенту всяких-там демо-версий, но зато надежность возрастает многократно.
Вложения
unRegistrator.rar
(2.08 Кб) Скачиваний: 243
А я все практикую лечение травами...

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Re: привязка к железу

Сообщение TiG » 22.02.2010 (Пн) 12:59

Спасибо 2 all)
2 Diamock, программный код можешь положить тут?

за 50 сек говоришь, а можешь рассказать в общих или не общих чертах как?
Все мои игрушки мама разметало ураганом...

Diamock
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 388
Зарегистрирован: 26.10.2009 (Пн) 4:19
Откуда: Кемерово

Re: привязка к железу

Сообщение Diamock » 23.02.2010 (Вт) 14:41

Уважаемый TiG.
Вот код использования функции GetVolumeInformationA. Но она, как писал уважаемый jangle
...никакого к серийному номеру диска не имеет, это серийный номер тома. Который меняется после форматирования диска или вручную...

Код: Выделить всё
Declare Function GetVolumeSerialNumber Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long

Function VolumeSerialNumber(ByVal RootPath As String) As String

Dim VolLabel As String
Dim VolSize As Long
Dim Serial As Long
Dim MaxLen As Long
Dim Flags As Long
Dim Name As String
Dim NameSize As Long
Dim s As String
Dim ret As Boolean

ret = GetVolumeSerialNumber(RootPath, VolLabel, VolSize, _
Serial, MaxLen, Flags, Name, NameSize)

    If ret Then
        s = Format(Hex(Serial), "00000000")
        VolumeSerialNumber = Left(s, 4) + "-" + Right(s, 4)
    Else
        VolumeSerialNumber = "0000-0000"
    End If
   
End Function

Вот ещё одна функция, возвращающая версию BIOS. Так это или нет, я думаю уважаемые гуру нашего форума разъяснят.
Для начала, требуется подключить Microsoft WMI Scripting V1.2 Library, находящуюся WINDOWS\system32\wbem\wbemdisp.TLB
Это собственно сам код:
Код: Выделить всё
Public Function BIOSVersion() As String
   Dim BiosSet As SWbemObjectSet
   Dim bios As SWbemObject
   Dim itmx As ListItem
   Dim cnt As Long
   Dim msg As String
   
   Set BiosSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
                                      InstancesOf("Win32_BIOS")
   
   On Local Error Resume Next
   
   For Each bios In BiosSet

        BIOSVersion = bios.Version

   Next


End Function

С уважением...
In der Beschrankung zeigt sich erst der Meister
Графоманю...

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: привязка к железу

Сообщение hclubmk » 09.03.2010 (Вт) 17:12

jangle писал(а):Вот пропатченный вариант твой программы

Ну, MapFileAndCheckSumA покажет, что файл пропатчен.
Twister писал(а):Задействуйте шифрование

+1
Научились ли Вы радоваться трудностям?

Diamock
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 388
Зарегистрирован: 26.10.2009 (Пн) 4:19
Откуда: Кемерово

Re: привязка к железу

Сообщение Diamock » 09.03.2010 (Вт) 17:40

hclubmk писал(а):MapFileAndCheckSumA покажет, что файл пропатчен.

А, можно с этого момента подробнее... :?:
In der Beschrankung zeigt sich erst der Meister
Графоманю...

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: привязка к железу

Сообщение hclubmk » 09.03.2010 (Вт) 17:52

Код: Выделить всё
Private Declare Function MapFileAndCheckSumA Lib "Imagehlp.dll" (ByVal FileName As String, _
HeaderSum As Long, CheckSum As Long) As Long

HeaderSum - CRC из заголовка EXE
CheckSum - пересчитанная CRC
Если не совпадают - был патч.
В общем, есть меры, есть контрмеры, но есть меры и на контрмеры - и так до бесконечности :)
Научились ли Вы радоваться трудностям?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: привязка к железу

Сообщение Хакер » 09.03.2010 (Вт) 17:55

HeaderSum - CRC из заголовка EXE

А ты знаешь, что там обычно?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: привязка к железу

Сообщение hclubmk » 09.03.2010 (Вт) 18:41

_LOADED_IMAGE /_IMAGE_NT_HEADERS /_IMAGE_OPTIONAL_HEADER /CheckSum
или я что-то перепутал?
Научились ли Вы радоваться трудностям?

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList