Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2010, 14:06   #1
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию Защита программы по железу

Почему то не работает на Windows7. Ворачивает пустую строку.
Получаю код таким образом:

Код:

uses
  NB30;

function GetAdapterInfo(Lana: Char): string;
var
  Adapter: TAdapterStatus;
  NCB: TNCB;
begin
  FillChar(NCB, SizeOf(NCB), 0);
  NCB.ncb_command := Char(NCBRESET);
  NCB.ncb_lana_num := Lana;
  if Netbios(@NCB) <> Char(NRC_GOODRET) then
  begin
    Result := 'mac not found';
    Exit;
  end;

  FillChar(NCB, SizeOf(NCB), 0);
  NCB.ncb_command := Char(NCBASTAT);
  NCB.ncb_lana_num := Lana;
  NCB.ncb_callname := '*';

  FillChar(Adapter, SizeOf(Adapter), 0);
  NCB.ncb_buffer := @Adapter;
  NCB.ncb_length := SizeOf(Adapter);
  if Netbios(@NCB) <> Char(NRC_GOODRET) then
  begin
    Result := 'mac not found';
    Exit;
  end;
  Result :=
  IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' +
  IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' +
  IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' +
  IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' +
  IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' +
  IntToHex(Byte(Adapter.adapter_address[5]), 2);
end;

function GetMACAddress: string;
var
  AdapterList: TLanaEnum;
  NCB: TNCB;
begin
  FillChar(NCB, SizeOf(NCB), 0);
  NCB.ncb_command := Char(NCBENUM);
  NCB.ncb_buffer := @AdapterList;
  NCB.ncb_length := SizeOf(AdapterList);
  Netbios(@NCB);
  if Byte(AdapterList.length) > 0 then
    Result := GetAdapterInfo(AdapterList.lana[0])
  else
    Result := 'mac not found';
end;
Знаю что с МАК работать не желательно поэтому и прошу помочь найти другой способ защитить свой програмный продукт, чтобы он работал только на одной машине.
Заранее благодарен всем кто поможет разобраться с данной проблемкой!

Последний раз редактировалось BarakudaX777; 05.09.2010 в 15:14.
BarakudaX777 вне форума Ответить с цитированием
Старый 05.09.2010, 15:01   #2
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

А что если получать CRC какого нибудь файла? МОжет есть в системе файл, чтобы у него был уникальный CRC

Хотя легко будет обходить такую защиту.
Люди помогите! нужна функция которая поможет идентифицировать систему. ЧТоб и на Семёрке работала!
BarakudaX777 вне форума Ответить с цитированием
Старый 05.09.2010, 15:43   #3
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

Пока реализовал такой метод. Если кто может проверьте его пожалуйста на WIndows 7!
Код:
function SirealNumberDisk: string;
// Определяем серийный номер диска
var
  VolumeName         : array [0..MAX_PATH-1] of Char;
  FileSystemName     : array [0..MAX_PATH-1] of Char;
  VolumeSerialNo     : DWord;
  MaxComponentLength : DWord;
  FileSystemFlags    : DWord;
  disk: string;

function GetSpecialPath(CSIDL: word): string;
var s:  string;
begin
  SetLength(s, MAX_PATH);
  if not SHGetSpecialFolderPath(0, PChar(s), CSIDL, true)
  then s := '';
  result := PChar(s);
end;

  function GetReplaceCDNumber(num: String): String;
  var
    i, len: Integer;
  begin
    Result:= '';
    len:= Length(num);
    if len <> 8 then exit;
    for i:= 1 to (len div 2) do begin
       Dec(len);
       Result:= Result + num[len];
       Result:= Result + num[len+1];
       Dec(len);
    end;
  end;

begin
  disk:=copy(GetSpecialPath(CSIDL_WINDOWS),1,1)+':\';
 // showmessage(disk);
  GetVolumeInformation(PChar(disk), VolumeName, MAX_PATH, @VolumeSerialNo, MaxComponentLength,
FileSystemFlags, FileSystemName, MAX_PATH);
  Result:= IntToHex(Integer(VolumeSerialNo), 8);
  if Win32Platform <> VER_PLATFORM_WIN32_NT then
    Result:= GetReplaceCDNumber(Result);
end;

Последний раз редактировалось BarakudaX777; 05.09.2010 в 15:51.
BarakudaX777 вне форума Ответить с цитированием
Старый 05.09.2010, 15:46   #4
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

А что бы вам из реестра информацию о железе не вытягивать?
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 05.09.2010, 15:48   #5
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

Цитата:
Сообщение от ex.cluz Посмотреть сообщение
А что бы вам из реестра информацию о железе не вытягивать?
Реестр можно легко подтереть, да и слишком уж много прог по отслежке таких обращений
BarakudaX777 вне форума Ответить с цитированием
Старый 05.09.2010, 15:56   #6
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

С таким подходом, как у вас, надо защиту по электронному ключу (Стелс 2, например) реализовывать

Вы знаете, кому надо, тот все равно вскроет защиту.
Я, обычно делаю только "защиту от дураков", т.к. от профи спасет лишь серьезная защита, которая сама стоит дорого.

Что у вас за программа? Если серьезная коммерческая, то лучше смотреть в сторону хард-локов, ИМХО.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 05.09.2010, 16:13   #7
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

Конечно я в курсе что нет той защиты что нельзя обойти, но всё же!
Тот кто пользуется программой полюбому подключен к интернету, это позволило мне сделать программу с интернет защитой+ реализовал шифрование текста всей программы. ПОдписками программы можно управлять через web сайт. Программа привязана к компу и работает на 1 копию.
+ собираюсь сделать проверку CRC от патчеров. Уже реализована проверка версий, и многое "вкусное"
BarakudaX777 вне форума Ответить с цитированием
Старый 05.09.2010, 16:22   #8
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

[OFFTOP]
Хорошо вы потрудились. Мне интересно стало, а сколько времени вы потратили на меры по предотвращению взлома вашей программы?

Мне как-то лень терять время на реализацию серьезной защиты, т.к. мне это время лучше пустить на работу над каким-нибудь новым проектом.
[/OFFTOP]
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 05.09.2010, 16:31   #9
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

Цитата:
Сообщение от ex.cluz Посмотреть сообщение
[OFFTOP]
Хорошо вы потрудились. Мне интересно стало, а сколько времени вы потратили на меры по предотвращению взлома вашей программы?

Мне как-то лень терять время на реализацию серьезной защиты, т.к. мне это время лучше пустить на работу над каким-нибудь новым проектом.
[/OFFTOP]
ну на разработку защиты гдето около 2х недель. очень долго искать приходилось что да как сделать.
А на разработку сайта уже около 3х месяцев. И ещё работаю над ним.
Пока новых проектов не намечается, работаю с этим
BarakudaX777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Защита программы Demien Общие вопросы Delphi 11 16.07.2009 23:54
Защита программы pomoshnic Паскаль, Turbo Pascal, PascalABC.NET 0 24.11.2008 22:12
Защита программы Патрон Общие вопросы Delphi 6 23.05.2008 16:05
Защита программы Vovkin Безопасность, Шифрование 1 08.04.2007 18:04