Привязка к железу это как

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

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

Нам понадобится всего 2 API — функции:

  • GetDriveType — определяет и возвращает тип носителя;
  • GetVolumeInformation — определяет информацию о носителе, среди которой содержится серийный номер.

Рассмотрим описание этих функций для С++ и Delphi. Первой будет функция GetDriveType, она очень простая и использует всего один параметр — указатель на том. Например «c:\»,»a:\» и т.д. Функция возвращает одно из следующих значений:

  • DRIVE_UNKNOWN — 0 : диск неопределен/не существует
  • DRIVE_NO_ROOT_DIR — 1 : неверный путь/ путь не указывает на том
  • DRIVE_REMOVABLE — 2 : тип устройства определяется как съемный (дискета, флешка и т.д.)
  • DRIVE_FIXED — 3 : тип устройства — фиксированный диск (жесткий диск)
  • DRIVE_REMOTE — 4 : тип устройства — удаленный(сетевой) диск
  • DRIVE_CDROM — 5 : это устройство CD-ROM
  • DRIVE_RAMDISK — 6 : виртуальный диск, созданный в оперативной памяти

Delphi

Замечание: Если в качестве параметра указать для С/С++ NULL, а для Delphi — nil то тип устройства будет определяться для текущего диска (с которого была запущена программа).

А теперь взглянем на функцию GetVolumeInformation. Тоже достаточно простая функция, однако использует параметров значительно больше.

Delphi

Замечание: Если в качестве первого параметра указать для С/С++ NULL, а для Delphi — nil то функция будет выполняется для текущего диска (с которого была запущена программа).

Ну а теперь собственно для пущего интересу приведу пример, как привязать программу к устройству. В данном примере будем привязывать программу к флешке. Смотрим пример:

Delphi

Замечание: Может возникнуть вопрос, а как узнать серийник диска, чтобы знать с чем сравнивать? Очень просто, для этого пишем тестовую прогу, в которой пишем следующий код:

Источник

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

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

Нам понадобится всего 2 API — функции:

  • GetDriveType — определяет и возвращает тип носителя;
  • GetVolumeInformation — определяет информацию о носителе, среди которой содержится серийный номер.

Рассмотрим описание этих функций для С++ и Delphi. Первой будет функция GetDriveType, она очень простая и использует всего один параметр — указатель на том. Например «c:\»,»a:\» и т.д. Функция возвращает одно из следующих значений:

  • DRIVE_UNKNOWN — 0 : диск неопределен/не существует
  • DRIVE_NO_ROOT_DIR — 1 : неверный путь/ путь не указывает на том
  • DRIVE_REMOVABLE — 2 : тип устройства определяется как съемный (дискета, флешка и т.д.)
  • DRIVE_FIXED — 3 : тип устройства — фиксированный диск (жесткий диск)
  • DRIVE_REMOTE — 4 : тип устройства — удаленный(сетевой) диск
  • DRIVE_CDROM — 5 : это устройство CD-ROM
  • DRIVE_RAMDISK — 6 : виртуальный диск, созданный в оперативной памяти

Delphi

Замечание: Если в качестве параметра указать для С/С++ NULL, а для Delphi — nil то тип устройства будет определяться для текущего диска (с которого была запущена программа).

А теперь взглянем на функцию GetVolumeInformation. Тоже достаточно простая функция, однако использует параметров значительно больше.

Delphi

Замечание: Если в качестве первого параметра указать для С/С++ NULL, а для Delphi — nil то функция будет выполняется для текущего диска (с которого была запущена программа).

Ну а теперь собственно для пущего интересу приведу пример, как привязать программу к устройству. В данном примере будем привязывать программу к флешке. Смотрим пример:

Delphi

Замечание: Может возникнуть вопрос, а как узнать серийник диска, чтобы знать с чем сравнивать? Очень просто, для этого пишем тестовую прогу, в которой пишем следующий код:

Delphi

Ссылки по теме

Помощь
Задать вопрос
программы
обучение
экзамены
компьютеры
ICQ-консультанты
Skype-консультанты
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям.

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

Источник

Привязка программы к железу + онлайн верификация

Данную статью я представляю вниманию новичков для обеспечения защиты своего софта. Защита реализуется путем привязки к железу компа + онлайн проверка.

Наша защита будет состоять из нескольких частей:

  • Генератор серийного номера по системным характеристикам.
  • Генератор ключа авторизации по серийнику
  • Защищаемая программа

Итак… с структурой мы разобрались, теперь нужно определиться к каким параметрам мы будем осуществлять привязку.

Мы сделаем это через WIN Api функции:

  • GetUserName — Имя текущего пользователя.
  • GetComputerName — Имя компутора.
  • GetVolumeInformation — Получение информации о носителе.
  • GlobalMemoryStatus — Информация о используемой системой памяти.

Что бы облегчить вам жизнь, я приведу готовые функции:

function UserName: string;
var
u: pchar;
i: dword;
begin
i := 1024;
u := StrAlloc(Succ(i));
if GetUserName(u, i) then Result := StrPas(u) else Result := ‘?’;
end;

function ComputerName: string;
var
buffer: array[0..255] of char;
size: dword;
begin
size := 256;
if GetComputerName(buffer, size) then
Result := buffer
else
Result := »
end;

function GetHard: String;
var
VolumeName, FileSystemName: array [0..MAX_PATH-1] of Char;
VolumeSerialNo: DWord;
MaxComponentLength,FileSystemFlags: Cardinal;

GetVolumeInformation(‘C:\’,VolumeName,MAX_PATH,@VolumeSerialNo,
MaxComponentLength,FileSystemFlags, FileSystemName,MAX_PATH);
Result := IntToHex(VolumeSerialNo,8);

function GetMem: String;
var
MyMem: TMemoryStatus;

MyMem.dwLength:=SizeOf(MyMem);
GlobalMemoryStatus(MyMem);
with MyMem do begin
Result:= IntToStr(dwTotalPhys);
end;
end;

Итак, мы получили всю интересующую нас информацию. Теперь мы склеим эти данные в hex строку, что бы конечный пользователь не знал, какие параметры мы используем.
Берем функцию преобразования в 16ричный вид.

function StringToHex(str1,Separator:String):String;
var
buf:String;
i:Integer;
begin
buf:=»;
for i:=1 to Length(str1) do begin
buf:=buf+IntToHex(Byte(str1[i]),2)+Separator;
end;
Result:=buf;
end;

Склеим все параметры —

function getSerial:string;
begin
Result := StringToHex((UserName + ComputerName + GetHard + GetMem));
end;

Вывод полученной строки в TEdit

procedure TForm2.Button1Click(Sender: TObject);
begin
Edit1.Text := getSerial;
end;

Мои поздравления, готов модуль получения serial кода.

Генератор регистрационного ключа

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

function getKey(Serial: string):string;
begin
Result := MD5DigestToStr(MD5String(Serial+’123′));

Теперь кидаем на форму два Tedit и кнопку.
на онклик ставим
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := getKey(Edit1.Text); / в первый Edit вставляем серийник, во втором будет зашифрованый вариант(очевидно)
end;

Пишем основную программу.

1) Кидаем все функции сбора инфы о компе и генерации серийника из первого модуля.
2) Кидаем функцию шифрации серийника из генератора рег ключа.
Приступим к регистрации программы и онлайн привязки. Кидаем Tedit(для ввода рег ключа) + 2 кнопки
(1 — проверка на валидность рег ключа 2 — коннект к серверу и проверка на наличия записи там)
procedure TForm2.Button1Click(Sender: TObject);
begin
if Edit1.Text = getKey(GetSerial) then ShowMessage(‘RegOk’) else ShowMessage(‘NoFuckinWay’);
end;

При валидности рег ключа — RegOk, если нет, то посылает.
В качестве онлайн проверки будем использовать простейший вариант — txt файл.
Алгоритм — на хосте лежит файл серийник.txt, а в нем же рег ключ. Программа сравнивает содержимое текстовика и ключ, сгенереный программой.
procedure TForm2.Button2Click(Sender: TObject);
begin
if getKey(GetSerial)= IdHTTP1.Get(‘http://zzzzzz.com/reg/’+GetSerial+’.txt’) then ShowMessage(‘RegOk’) else ShowMessage(‘NoFuckinWay’);
end;

Вот и все Осталось вам придумать, куда прописывать то, что программа зарегистрирована.
Я лишь описал наглядный пример, как строятся такие методы защиты… вы можете использовать свои способы привязки, совершенствуя код + верификация через txt самый ненадежный способ. используйте php+mysql и т.д.

Будут вопросы — пишите, но я тут разжевал все до процедур онклика.

Источник

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

Привязка приложения к железу
Я бы хотел узнать есть ли привязка к железу в С# к файлу .ехе?И если есть можете дать код и сказать.

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

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

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

Привязка по железу
не пойму в чем проблема

Сегодня кто-то потерял ключи от загона с говорящими абы как?) Серьёзно. Уже который новый аккаунт с такой постановкой вопроса, что хоть стой, хоть падай.

TheArti28, ты тролль новорождённый или реально это спрашиваешь?

TheArti28, У меня есть машина. Раньше ездила, сейчас перестала. Что мне нужно сделать, чтоб она поехала?

заменил только материнку и процессор,приложения работает но пишет «демо режим»,это приложения для обрабатывания фото и после того как заменил комплектующие на фото остается надпись «демо режим» типа слитела лицензия которая была привязана к комплектующим

Добавлено через 2 минуты

символы какие-то,могу сбросить,посмотришь

Добавлено через 23 минуты
может можно каким-то макаром вписать в систему названия старой материнки чтобы приложения заработало как раньше,как бы обмануть

Да,потому что приложения уже не поддерживается,купить лицензию уже не возможно,раньше я покупал лицензию

Добавлено через 1 час 20 минут

TheArti28, в приложении есть кнопка «Активировать» или что-то подобное?

Добавлено через 18 секунд
«Ввести ключ». и т.п.?

TheArti28, в приложении есть кнопка «Активировать» или что-то подобное?

Добавлено через 18 секунд
«Ввести ключ». и т.п.?

Мне делать что-ли нечего?

Добавлено через 45 секунд
Есть форумы по таким делам, ищи сам. За копейку сломают.

Привязка к железу
Здравствуйте, добрый вечер. Не знаю как правильно сформулировать свой вопрос, но постараюсь вам.

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

[Критика] Привязка к железу
Ребят привет, хотел бы чтобы вы мне сказали какие есть уязвимости в моей ТРУ привязке:D .

Привязка приложения к файлу с определенным расширением
Здравствуйте. Как осуществить такую привязку: мое приложение формирует файлы с определенным.

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

Создание, привязка и проверка цифровой подписи для приложения
Добрый день. Начинаю разбираться с цифровой подписью приложений и понемногу вырисовывается.

Источник

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

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

Нам понадобится всего 2 API — функции:

  • GetDriveType — определяет и возвращает тип носителя;
  • GetVolumeInformation — определяет информацию о носителе, среди которой содержится серийный номер.

Рассмотрим описание этих функций для С++ и Delphi. Первой будет функция GetDriveType, она очень простая и использует всего один параметр — указатель на том. Например «c:\»,»a:\» и т.д. Функция возвращает одно из следующих значений:

  • DRIVE_UNKNOWN — 0 : диск неопределен/не существует
  • DRIVE_NO_ROOT_DIR — 1 : неверный путь/ путь не указывает на том
  • DRIVE_REMOVABLE — 2 : тип устройства определяется как съемный (дискета, флешка и т.д.)
  • DRIVE_FIXED — 3 : тип устройства — фиксированный диск (жесткий диск)
  • DRIVE_REMOTE — 4 : тип устройства — удаленный(сетевой) диск
  • DRIVE_CDROM — 5 : это устройство CD-ROM
  • DRIVE_RAMDISK — 6 : виртуальный диск, созданный в оперативной памяти

Delphi

Замечание: Если в качестве параметра указать для С/С++ NULL, а для Delphi — nil то тип устройства будет определяться для текущего диска (с которого была запущена программа).

А теперь взглянем на функцию GetVolumeInformation. Тоже достаточно простая функция, однако использует параметров значительно больше.

Delphi

Замечание: Если в качестве первого параметра указать для С/С++ NULL, а для Delphi — nil то функция будет выполняется для текущего диска (с которого была запущена программа).

Ну а теперь собственно для пущего интересу приведу пример, как привязать программу к устройству. В данном примере будем привязывать программу к флешке. Смотрим пример:

Delphi

Замечание: Может возникнуть вопрос, а как узнать серийник диска, чтобы знать с чем сравнивать? Очень просто, для этого пишем тестовую прогу, в которой пишем следующий код:

Источник

Читайте также:  Металлолом от 100 тонн
Поделиться с друзьями
Металл
Adblock
detector