Форум: "Основная";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
ВнизЗащита от пиратства Найти похожие ветки
← →
Александр1 (2005-01-21 21:17) [0]Здравствуйте уважаемые мастера. У меня такая проблема. Есть программа, не важно какая. Надо сделать так, чтобы она работала только на конкретном компе (защита от пиратства). Я понимаю, что, наверное, надо сделать что-то типа: считать какую-нибуть уникальную информацию о каком либо оборудованию компьютера и записать в программу. А затем проверять если не тот комп, то не работает программа. Посоветуйте пожалуйста, какую именно информацию лучше всего считывать. И как может у кого примеры, какие есть. Может кто уже делал такое?
Заранее спасибо за помощь!
← →
Gero © (2005-01-21 21:19) [1]
> Надо сделать так, чтобы она работала только на конкретном
> компе
Что ты подразумеваешь под понятием «комп»?
← →
Anatoly Podgoretsky © (2005-01-21 21:26) [2]Раба своего хочешь поиметь?
← →
MacroDenS © (2005-01-21 21:41) [3]Подобная тема здесь недавно обсуждалась...
Так вот на ее основе хочу тебе сразу заметить, что привязываться к "железу" - это очень не хорошо, да и защита такая не совсем надежная, можно же проследить что откуда читается, куда пишется и что с чем сравнивается. А дальше пишется патч.
Если тебе нужна именно защита "на дурака", то можно и к железу цепляться, можно так же спрятать куда-нибудь поглубже файло с инфой (не факт что не удалят).
← →
KilkennyCat © (2005-01-21 21:45) [4]www.aladdin.ru
← →
Vasya.ru © (2005-01-21 23:53) [5]Есть программа, не важно какая
если программа не важно какая, то кто её воровать то будет?
← →
Johnmen © (2005-01-22 02:17) [6]"Hello, world" защищенный от пиратства ? Прикольно !
← →
Александр1 (2005-01-22 06:01) [7]
> Vasya.ru © (21.01.05 23:53) [5]
> Есть программа, не важно какая
> если программа не важно какая, то кто её воровать то будет?
Программа маленькая, но удаленькая. Сделана она для университета, для родной кафедры. Но если её не защитить, то её растащут студенты бог знает куда. Просто так уже было. Я тоже написал программу, принёс на кафедру. А уже через месяц она оказалась в 3-х организациях города. Которые могли бы и купить данную программу, а им она досталась на халяву. Из за того, что студенты ходят на практику и таскают всё куда попало. С 3- огранизаций я бы мог получить как минимум 9000 руб, а получил фиг. Если кому интересно, то программа по расчёту ТЕПЛОПОТЕРЬ здания.
← →
Александр1 (2005-01-22 06:02) [8]
> что привязываться к "железу" - это очень не хорошо,
А что тогда посоветуешь?
← →
Александр1 (2005-01-22 06:04) [9]
> KilkennyCat © (21.01.05 21:45) [4]
> www.aladdin.ru
Я занаю про эти ключи. Это конечно всё хорошо, но они денег стоят. А мои программы дешёвые. Я считал не выгодно получается.
← →
Александр1 (2005-01-22 06:57) [10]Я вот ту испытывал один метод. Проверять серийный номер жёсткого диска или флешки. Использую следующий код.
function GetHardDiskSerial(const DriveLetter: Char): string;
var
NotUsed: DWORD;
VolumeFlags: DWORD;
VolumeInfo: array[0..MAX_PATH] of Char;
VolumeSerialNumber: DWORD;
begin
GetVolumeInformation(PChar(DriveLetter + ":\"),
nil, SizeOf(VolumeInfo), @VolumeSerialNumber, NotUsed,
VolumeFlags, nil, 0);
{Result := Format("Label = %s VolSer = %8.8X",
[VolumeInfo, VolumeSerialNumber])}
Result := Format("%s%8.8X",
[VolumeInfo, VolumeSerialNumber])
end;
………..
h:=GetHardDiskSerial("D");
Только он код какой-то выдаёт не постоянный. Он иногда меняется. Я точно знаю, что он меняется при форматировании диска. Но иногда и так. Не надёжно это всё.
← →
Александр1 (2005-01-22 06:57) [11]Кто-нибудь знает, как определить, например дату создания оперативной памяти, процессора или Bios?
← →
KilkennyCat © (2005-01-22 09:29) [12]
> Я занаю про эти ключи. Это конечно всё хорошо, но они денег
> стоят. А мои программы дешёвые. Я считал не выгодно получается.
ого... то есть, отдать за ключ 600 рублей, получив 3000 - это не выгодно? Выгодно получить фиг?
Жадность погубит.
← →
Knight © (2005-01-22 10:13) [13]
> MacroDenS © (21.01.05 21:41) [3]
> к "железу" - это очень не хорошо, да и защита такая не совсем
> надежная, можно же проследить что откуда читается, куда
> пишется и что с чем сравнивается. А дальше пишется патч.
Почему тогда нигде нет патчей к Консультанту Плюс?
← →
uny © (2005-01-22 10:44) [14][13]
патча не видел, но работает у нас без ключей
← →
Knight © (2005-01-22 11:22) [15]
> uny © (22.01.05 10:44) [14]
> патча не видел, но работает у нас без ключей
Если спрошу... как? Точно убьют... %)
Хотя похоже человек, который искал и не нашёл, плохо искал... я щас из интереса озадачился... инфы море =)
← →
Гарри Поттер © (2005-01-22 11:31) [16]Александр1 (22.01.05 6:57) [10]
Только он код какой-то выдаёт не постоянный. Он иногда меняется. Я точно знаю, что он меняется при форматировании диска. Но иногда и так. Не надёжно это всё.
А твоя программа после форматирования на диске сохранится??
Ничего страшного не случится если юзеры при переустановке системы переустановят и твою программу.
← →
Knight © (2005-01-22 11:49) [17]
> Гарри Поттер © (22.01.05 11:31) [16]
> системы переустановят и твою программу.
За отдельную плату... конечно же %)
← →
Knight © (2005-01-22 12:23) [18]имхо, никто со взломом твоей проги сильно заморачиваться не будет... поэтому можешь привязаться хоть к имени пользователя, компа или маку сетевой карты... %)
← →
Беспечный_Ангел © (2005-01-22 12:32) [19]
> Александр1 (22.01.05 06:57) [10]{ **** UBPFD *********** by delphibase.endimus.com ****
>> Поличение серийного номера IDE диска.
Функция получает серийный номер первого физического диска IDE (не серийный номер тома!).
Используется S.M.A.R.T. API, а под Windows NT/2K/XP запрос производится не напрямую к диску,
а через miniport драйвер контроллера, что позволяет читать серийный номер не имея прав администратора.
Функция может не работать, если первый контролер в системе не ATA или если первое устройство
не является винчестером, который поддерживает SMART (современные винчестеры поддерживают).
Если Вы хотите получить другие параметры диска/других дисков, то смотрите пример IdeInfo2 с моего сайта.
На Windows 9x требует наличия драйвера smartvsd.vxd (должен быть в стандартной поставке),
просто скопируйте его в \windows\system\iosubsys и перезагрузите компьютер.
Зависимости: Windows, SysUtils
Автор: Alex Konshin, akonshin@earthlink.net, Boston, USA
Copyright: http://home.earthlink.net/~akonshin/index.htm
Дата: 30 декабря 2002 г.
***************************************************** }
function GetIdeDiskSerialNumber: string;
type
TSrbIoControl = packed record
HeaderLength: ULONG;
Signature: array[0..7] of Char;
Timeout: ULONG;
ControlCode: ULONG;
ReturnCode: ULONG;
Length: ULONG;
end;
SRB_IO_CONTROL = TSrbIoControl;
PSrbIoControl = ^TSrbIoControl;
TIDERegs = packed record
bFeaturesReg: Byte; // Used for specifying SMART "commands".
bSectorCountReg: Byte; // IDE sector count register
bSectorNumberReg: Byte; // IDE sector number register
bCylLowReg: Byte; // IDE low order cylinder value
bCylHighReg: Byte; // IDE high order cylinder value
bDriveHeadReg: Byte; // IDE drive/head register
bCommandReg: Byte; // Actual IDE command.
bReserved: Byte; // reserved for future use. Must be zero.
end;
IDEREGS = TIDERegs;
PIDERegs = ^TIDERegs;
TSendCmdInParams = packed record
cBufferSize: DWORD; // Buffer size in bytes
irDriveRegs: TIDERegs; // Structure with drive register values.
bDriveNumber: Byte; // Physical drive number to send command to (0,1,2,3).
bReserved: array[0..2] of Byte; // Reserved for future expansion.
dwReserved: array[0..3] of DWORD; // For future use.
bBuffer: array[0..0] of Byte; // Input buffer.
end;
SENDCMDINPARAMS = TSendCmdInParams;
PSendCmdInParams = ^TSendCmdInParams;
TIdSector = packed record
wGenConfig: Word;
wNumCyls: Word;
wReserved: Word;
wNumHeads: Word;
wBytesPerTrack: Word;
wBytesPerSector: Word;
wSectorsPerTrack: Word;
wVendorUnique: array[0..2] of Word;
sSerialNumber: array[0..19] of Char;
wBufferType: Word;
wBufferSize: Word;
wECCSize: Word;
sFirmwareRev: array[0..7] of Char;
sModelNumber: array[0..39] of Char;
wMoreVendorUnique: Word;
wDoubleWordIO: Word;
wCapabilities: Word;
wReserved1: Word;
wPIOTiming: Word;
wDMATiming: Word;
wBS: Word;
wNumCurrentCyls: Word;
wNumCurrentHeads: Word;
wNumCurrentSectorsPerTrack: Word;
ulCurrentSectorCapacity: ULONG;
wMultSectorStuff: Word;
ulTotalAddressableSectors: ULONG;
wSingleWordDMA: Word;
wMultiWordDMA: Word;
bReserved: array[0..127] of Byte;
end;
PIdSector = ^TIdSector;
const
IDE_ID_FUNCTION = $EC;
IDENTIFY_BUFFER_SIZE = 512;
DFP_RECEIVE_DRIVE_DATA = $0007C088;
IOCTL_SCSI_MINIPORT = $0004D008;
IOCTL_SCSI_MINIPORT_IDENTIFY = $001B0501;
DataSize = sizeof(TSendCmdInParams) - 1 + IDENTIFY_BUFFER_SIZE;
BufferSize = SizeOf(SRB_IO_CONTROL) + DataSize;
W9xBufferSize = IDENTIFY_BUFFER_SIZE + 16;
var
hDevice: THandle;
cbBytesReturned: DWORD;
pInData: PSendCmdInParams;
pOutData: Pointer; // PSendCmdInParams;
Buffer: array[0..BufferSize - 1] of Byte;
srbControl: TSrbIoControl absolute Buffer;
procedure ChangeByteOrder(var Data; Size: Integer);
var
ptr: PChar;
i: Integer;
c: Char;
begin
ptr := @Data;
for i := 0 to (Size shr 1) - 1 do
begin
c := ptr^;
ptr^ := (ptr + 1)^;
(ptr + 1)^ := c;
Inc(ptr, 2);
end;
end;
begin
Result := "";
FillChar(Buffer, BufferSize, #0);
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin // Windows NT, Windows 2000
// Get SCSI port handle
hDevice := CreateFile("\\.\Scsi0:", GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
if hDevice = INVALID_HANDLE_VALUE then
Exit;
try
srbControl.HeaderLength := SizeOf(SRB_IO_CONTROL);
System.Move("SCSIDISK", srbControl.Signature, 8);
srbControl.Timeout := 2;
srbControl.Length := DataSize;
srbControl.ControlCode := IOCTL_SCSI_MINIPORT_IDENTIFY;
pInData := PSendCmdInParams(PChar(@Buffer) + SizeOf(SRB_IO_CONTROL));
pOutData := pInData;
with pInData^ do
begin
cBufferSize := IDENTIFY_BUFFER_SIZE;
bDriveNumber := 0;
with irDriveRegs do
begin
bFeaturesReg := 0;
bSectorCountReg := 1;
bSectorNumberReg := 1;
bCylLowReg := 0;
bCylHighReg := 0;
bDriveHeadReg := $A0;
bCommandReg := IDE_ID_FUNCTION;
end;
end;
if not DeviceIoControl(hDevice, IOCTL_SCSI_MINIPORT, @Buffer,
BufferSize, @Buffer, BufferSize, cbBytesReturned, nil) then
Exit;
finally
CloseHandle(hDevice);
end;
end
else
begin // Windows 95 OSR2, Windows 98
hDevice := CreateFile("\\.\SMARTVSD", 0, 0, nil, CREATE_NEW, 0, 0);
if hDevice = INVALID_HANDLE_VALUE then
Exit;
try
pInData := PSendCmdInParams(@Buffer);
pOutData := PChar(@pInData^.bBuffer);
with pInData^ do
begin
cBufferSize := IDENTIFY_BUFFER_SIZE;
bDriveNumber := 0;
with irDriveRegs do
begin
bFeaturesReg := 0;
bSectorCountReg := 1;
bSectorNumberReg := 1;
bCylLowReg := 0;
bCylHighReg := 0;
bDriveHeadReg := $A0;
bCommandReg := IDE_ID_FUNCTION;
end;
end;
if not DeviceIoControl(hDevice, DFP_RECEIVE_DRIVE_DATA, pInData,
SizeOf(TSendCmdInParams) - 1, pOutData, W9xBufferSize,
cbBytesReturned, nil) then
Exit;
finally
CloseHandle(hDevice);
end;
end;
with PIdSector(PChar(pOutData) + 16)^ do
begin
ChangeByteOrder(sSerialNumber, SizeOf(sSerialNumber));
SetString(Result, sSerialNumber, SizeOf(sSerialNumber));
end;
end;
Пример использования:
var
s: string;
rc: DWORD;
begin
s := GetIdeDiskSerialNumber;
if s = "" then
begin
rc := GetLastError;
if rc = 0 then
WriteLn("IDE drive is not support SMART feature")
else
WriteLn(SysErrorMessage(rc));
end
else
WriteLn("Disk serial number: """, s, """");
end.
← →
Беспечный_Ангел © (2005-01-22 12:33) [20]
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение серийного номера BIOS
Зависимости:
Автор: Gua, fbsdd@ukr.net, ICQ:141585495, Simferopol
Copyright:
Дата: 03 мая 2002 г.
***************************************************** }
function GetBiosNumber: string;
begin
result := string(pchar(ptr($FEC71)));
end;
(с) DelphiWorld.narod.ru
> MacroDenS © (21.01.05 21:41) [3]
А на аппаратных ключах надежней? ИМХО, еще более ненадежно.
← →
Беспечный_Ангел © (2005-01-22 12:35) [21]Я думаю, Вам будет интересно это почитать.
Регистрация основанная на серийных ключах
--------------------------------------------------------------------------------
Автор: Владимир Каталов
При хорошем знании ассемблера очень просто обойти защиту типа имя пользователя-регкод: когда пользователь вводит свое имя и регистрационный код, программа генерирует "правильный" код и сравнивает его с тем, который он ввел, поэтому "перехватить" этот код (просто считать его из памяти) не составлет особого труда. В большинстве случаев достаточно просто поставить breakpoint на функцию lstrcmp -- и все дела... Упаковка программы, анти-дебаггерные и анти-дизассемблерные "примочки" помогают слабо.
А вот метод фиксированного ключа может быть реализован достаточно неплохо. Хранить "правильные" ключи в программе совсем не обязательно - можно подчинить их некоторым правилам; что-то подобное делает Microsoft со своими CD-keys, но у них все слишком просто. Алгоритм проверки может быть длинным и запутанным, так что его дизассемблирование (и "разборка", что же он делает) причинит немало головной боли. Именно первый метод я и применил для защиты своей программы (Advanced Disk Catalog - старые версии), но и он был "сломан" (хотя, как мне написал ломавший его хакер, подборка всего двух правильных ключей отняла у него много времени). Тогда мне в голову пришла идея: а что, если ключи хранить внутри программы, но зашифрованными? Я "сгенерил" некоторое количество ключей (абсолютно случайным образом), зашифровал их (по отдельности) 128-битным ключом по алгоритму RSA и прошил в программу в виде ресурса. Когда пользователь вводит ключ, он шифруется по тому же алгоритму и сравнивается с правильными. Так как система с открытым ключом не позволяет произвести обратное преобразование, базируясь только на открытом ключе (а закрытого нет даже у меня - расшифровывать-то не надо), то подобрать ключи невозможно даже теоретически.
Есть, впрочем, еще одна проблема: хакер (или "крэкер", если угодно) может заменить "je" на "jne" (или что-то в этом роде) там, где происходит последняя проверка, и функция "IsValidKey(...)" будет всегда возвращать TRUE. Останется лишь написать маленький patch... Чтобы защититься и от этого, я вычисляю CRC своего exe-файла и сравниваю его с правильный, прошитым тоже внутри программы (естественно, при вычислении эта часть файла -- где лежит правильный CRC -- исключается; а "прошивается" он после компиляции). Кстати, это еще и защита от вирусов. Вообще-то, проверку CRC тоже можно локализовать и "запатчить", но это уже немного сложнее, особенно если программа вызывает функции чтения/записи и для других целей. Кроме того, не стоит в случае несовпадения CRC сразу об этом сообщать, иначе можно будет поставить hardware breakpoint и найти место, где он вычисляется. И последнее. Если хочется защитить программы совсем уж "круто", томожно несколько функций в своей программе (те, которые должны вызываться только в зарегистрированной версии), зашифровать по тому же алгоритму с открытым ключом. При этом, естественно, часть серийного номера (отсылаемого зарегистрировавшимся) надо сделать "статическим", т.е. неизменным для всех пользователей. На основе этой части после регистрации генерируется полный закрытый ключ, который далее используется для расшифровки указанных функций. Таким образом, даже если будет написан patch, позволяющий "зарегистрироваться" с любым (произвольным) кодом, расшифровка пройдет неправильно, и вместо нормального кода будет выполняться "мусор".
Этот способ я применил в другой своей программе (Advanced ZIP Password Recovery), и ее пока не вскрыли. Всего наилучшего !
Комментарий от Bad_guy: действительно, если некоторые нужные функции зашифрованы, расшифровать их практически невозможно, и я бы сказал, что для защиты программы этого метода с лихвой достаточно, но никогда не надо забывать, что есть такой способ взлома как кража правильного кода (хотя такой метод противоречит крэкерской этике, да и не крэкерство это вовсе). На мой же взгляд программа - это сейф, содержимое которого вам известно, и прежде чем начинать взламывать этот сейф надо подумать: так ли вам нужно его содержимое ? Автор вот говорит - никто не взломает Advanced ZIP Password Recovery, ну и пускай спит спокойно, а я пока поищу бесплатный аналог (если припрёт).
← →
Knight © (2005-01-22 12:36) [22]Ставь "Соболь" и привязывай прогу к нему...
← →
Knight © (2005-01-22 12:41) [23]А вообще прописывай лицензионное соглашение... если для некомерческого использования, то без регистрации, увидел иное использование - в суд... с компенсацией стоимости программы, моралного ущерба, плюс запрет на её использование в течении трёх лет... %)
← →
Александр1 (2005-01-22 20:58) [24]
> > Я занаю про эти ключи. Это конечно всё хорошо, но они
> денег
> > стоят. А мои программы дешёвые. Я считал не выгодно получается.
>
>
> ого... то есть, отдать за ключ 600 рублей, получив 3000
> - это не выгодно? Выгодно получить фиг?
>
> Жадность погубит.
Ещё почтовые расходы.
← →
Александр1 (2005-01-22 21:01) [25]
> А твоя программа после форматирования на диске сохранится??
>
> Ничего страшного не случится если юзеры при переустановке
> системы переустановят и твою программу.
Этого к сожалению ми не удастся. Т.к. без меня второй раз прогу получается не установить. Это плохо. Надо менять номер в программе под новый номер винта. И чё я каждый раз буду бегать. Я же им не могу сказать как это делать!
← →
Александр1 (2005-01-22 21:02) [26]
> имхо, никто со взломом твоей проги сильно заморачиваться
> не будет... поэтому можешь привязаться хоть к имени пользователя,
> компа или маку сетевой карты... %)
А как определить марку программно?
← →
Anatoly Podgoretsky © (2005-01-22 21:03) [27]Значит все таки поимел рабов и сам стал рабом.
Убивать из рогатки. Чистой воды лохотрон.
← →
4eshka) (2005-01-22 21:04) [28]Насчет привязки к железу, то есть замечательный компонент: Mitec System information. Лучше всего привязывать к дате биоса мат. платы+видео+серийники.(иногда бывало что на матках не было серийных номеров :) )
← →
Александр1 (2005-01-22 21:05) [29]
> Knight © (22.01.05 12:41) [23]
> А вообще прописывай лицензионное соглашение... если для
> некомерческого использования, то без регистрации, увидел
> иное использование - в суд... с компенсацией стоимости программы,
> моралного ущерба, плюс запрет на её использование в течении
> трёх лет... %)
Ну делать мне нечего больше как в суд ходить.
← →
Knight © (2005-01-22 21:06) [30]
> [25] Александр1 (22.01.05 21:01)
> Этого к сожалению ми не удастся. Т.к. без меня второй раз
> прогу получается не установить. Это плохо. Надо менять номер
> в программе под новый номер винта. И чё я каждый раз буду
> бегать. Я же им не могу сказать как это делать!
Знаешь как у нас Консультанта стявят? Звонят в Котлас, говорят код... те звонят в Архангельск, получают код регистрации... эти перезванивают минут через 15 вводят код регистрации... материнку сменил... всё сначала + денежка за перерегистрацию.. %)
← →
Knight © (2005-01-22 21:08) [31]
> [26] Александр1 (22.01.05 21:02)
> А как определить марку программно?
Не марку, а MAC-address... %)
← →
TUser © (2005-01-22 21:08) [32]
> Беспечный_Ангел © (22.01.05 12:33) [20]
Мне все интересно - во времена какой версии ТурбоПаскаля начал создаваться DelphiWorld?
← →
Александр1 (2005-01-22 21:36) [33]
> Беспечный_Ангел © (22.01.05 12:32) [19]
Большое при большое спасибо тебе за такой хороший пример!!!!
Прямо супер!!!!
Спасибо также за интересную статью. Я думаю, что когда-нибуть я тоже сделаю мощьную защиты для своих программ!
И если можно то хотел бы спросить. Я так понял приведённый пример показывает номер диска C, а как задать ему другие диски.
Зарание спасибо!
← →
Александр1 (2005-01-22 21:38) [34]
> Знаешь как у нас Консультанта стявят? Звонят в Котлас, говорят
> код... те звонят в Архангельск, получают код регистрации...
> эти перезванивают минут через 15 вводят код регистрации...
> материнку сменил... всё сначала + денежка за перерегистрацию..
> %)
Это хорошая идея!
← →
Александр1 (2005-01-22 21:40) [35]
> Knight © (22.01.05 21:08) [31]
>
> > [26] Александр1 (22.01.05 21:02)
> > А как определить марку программно?
>
> Не марку, а MAC-address... %)
Сетивушки не у всех есть!
← →
aus (2005-01-22 21:47) [36]Для меня злободневная тема!
Как раз на днях сдох винчестер с подобной программой, написана на FoxPro для DOS, напрямую обращается к диску, чего XP ему не позволяет. Программиста того уже не сыскать, да и не нужно. А программа-то выеденного яйца не стоит, да и по закону принадлежит работодателю, котрый заказал ПО и оплатил услуги программиста.
Пришлось переписывать, но на него я очень зол, как и на FoxPro.
← →
Johnmen © (2005-01-23 00:28) [37]Одного не понимаю.
Человек сам, добровольно раздаёт свою программу, а потом плачется на отсутствие материального вознаграждения. Непонятно за что...:)
← →
Александр1 (2005-01-23 06:39) [38]
> Johnmen © (23.01.05 00:28) [37]
> Одного не понимаю.
> Человек сам, добровольно раздаёт свою программу, а потом
> плачется на отсутствие материального вознаграждения. Непонятно
> за что...:)
В том то и дело, что я не раздовал её всем подряд, я записал её только на свою кафедру в университете. Я конечно понимал, что её раскопирую, но я не предполагал, что её раскопирует пол города и будит пользоваться.
← →
Беспечный_Ангел © (2005-01-23 11:35) [39]
> Александр1 (22.01.05 21:36) [33]
Не првильно понял :о) Он показывает ФИЗИЧЕСКИЙ номер первого IDE диска... А вот на сколько логических дисков он разбит - вопрос канэшно... )))
> TUser © (22.01.05 21:08) [32]
А фиг его знает... Но подборка классная!
← →
KilkennyCat © (2005-01-23 13:08) [40]
> её раскопирует пол города и будит пользоваться.
полгорода пользуется программой "теплопотери здания"? чтож-она делает-то такое? или кто у вас там в городе живет?
← →
Александр1 (2005-01-24 09:02) [41]
> Беспечный_Ангел © (23.01.05 11:35) [39]
>
> > Александр1 (22.01.05 21:36) [33]
>
> Не првильно понял :о) Он показывает ФИЗИЧЕСКИЙ номер первого
> IDE диска... А вот на сколько логических дисков он разбит
> - вопрос канэшно... )))
А как посмотреть физический номер второго диска. У меня винчестеров 3-и штуки стоит.
И ещё у флеш памяти есть такой номер?
← →
Александр1 (2005-01-24 09:05) [42]
> KilkennyCat © (23.01.05 13:08) [40]
>
> > её раскопирует пол города и будит пользоваться.
>
>
> полгорода пользуется программой "теплопотери здания"? чтож-она
> делает-то такое? или кто у вас там в городе живет?
Просто её раскопировали организациям. Организации проектируют здания и сооружения. При проектировании в здании системы отопления надо знать сколько тепла теряет каждое помещение. Очень удобная программа считает эти теплопотери. Согласно СНиП 2.04.05-91*.
Не посвещенным людям врятли понять. Чё за программа.
← →
Александр1 (2005-01-24 09:08) [43]
> Беспечный_Ангел © (22.01.05 12:33) [20]
> { **** UBPFD *********** by delphibase.endimus.com ****
> >> Получение серийного номера BIOS
>
> Зависимости:
> Автор: Gua, fbsdd@ukr.net, ICQ:141585495, Simferopol
> Copyright:
> Дата: 03 мая 2002 г.
> ***************************************************** }
>
> function GetBiosNumber: string;
> begin
> result := string(pchar(ptr($FEC71)));
> end;
Чё-то не хочет работать?
Может кто-нибуть ещё знает че в копмпьютере можно проверить такое уникальное. Что в другом компе уже другое. Например какой-нибуть номер материнки (если он есть) или дату создания
← →
Digitman © (2005-01-24 09:55) [44]
> Чё-то не хочет работать?
и не будет.
потому что этот код - полное непонимание автором происходящего.
← →
Александр1 (2005-01-24 10:31) [45]
> Digitman © (24.01.05 09:55) [44]
>
> > Чё-то не хочет работать?
>
>
> и не будет.
> потому что этот код - полное непонимание автором происходящего.
А как надо?
← →
4eshka) (2005-01-24 14:48) [46]
> Александр1 (24.01.05 09:08) [43]
>
> > Беспечный_Ангел © (22.01.05 12:33) [20]
> > { **** UBPFD *********** by delphibase.endimus.com ****
> > >> Получение серийного номера BIOS
> >
> > Зависимости:
> > Автор: Gua, fbsdd@ukr.net, ICQ:141585495, Simferopol
> > Copyright:
> > Дата: 03 мая 2002 г.
> > *****************************************************
> }
> >
> > function GetBiosNumber: string;
> > begin
> > result := string(pchar(ptr($FEC71)));
> > end;
>
> Чё-то не хочет работать?
> Может кто-нибуть ещё знает че в копмпьютере можно проверить
> такое уникальное. Что в другом компе уже другое. Например
> какой-нибуть номер материнки (если он есть) или дату создания
Ты конечно извени, выше я приводил пример. И компонент называл припомощи которого можно все это сделать.
А этот код бужет работать только в Win9X, в Xp можешь из реестра эту информацию брать. ВОТ
← →
Александр1 (2005-01-24 15:35) [47]
> Xp можешь из реестра эту информацию брать. ВОТ
А в реестре где она (информация)?
А вообще-то это всё не очень хорошо, мне бы желательно, чтобы определять какой-либо постоянный парамер у железа, чтобы привизать программу. А это получается ещё и версию windows надо будит проверять.
Может кто знает как прочитать номер материнской платы например или ещё что-нибуть?
← →
Digitman © (2005-01-24 15:45) [48]
> Александр1
тебе насчет рабства, кажется, уже говорили ?
неужели ты не понимаешь, что ставить юзера в зависимость от твоихкакпризов как минимум не есть корошо ?
а если у юзера железо, к которому ты привязался, вышло из строя и он вынужден заменить это железо ? или юзер апгрейд сподобился в кои-то веки сотворить своему железу ? он что, не имеет на это право, по-твоему ? или, заплатив уже тебе единожды, галопом на поклон к тебе вновь бежать обязан ? мол, на тебе , дорогой мой разработчик, еще N денег, только. мол, позволь мне после установки нового железа юзать твою расчудесную прогу ?
← →
Digitman © (2005-01-24 15:55) [49]
> Александр1
знаешь почему столь живуча та же пресловутая 1С ?
вовсе не потому, что в ней реализована супер-пупер защита, пусть даже и базирующаяся на внешних апрпаратных ключах ! Ломка этой защиты пусть и не столь тривиальна, но вполне реализуема, что и показывает куча крэк-софта в сети ..
1С живуча и продолжает приносить доходы ее разработчикам и франчайзи-прихлебателям потому что КУЧА НАРОДА регулярно, в том или ином виде, непрерывно работает над ее апдейтами ... ВНЕ зависимости от того, чем был обоснован очередной апдейт - то ли очередным поносом наших законотворцев, то ли очередным запором разработчиков собственно среды.
← →
KilkennyCat © (2005-01-24 16:23) [50]
> Просто её раскопировали организациям. Организации проектируют
> здания и сооружения. При проектировании в здании системы
> отопления надо знать сколько тепла теряет каждое помещение.
> Очень удобная программа считает эти теплопотери. Согласно
> СНиП 2.04.05-91*.
> Не посвещенным людям врятли понять. Чё за программа.
Да посвященные мы... лицензии строительные оформляем, однако. Только все равно не понятно, откель у вас столько строителей, на пол-города.
> 1С живуча и продолжает приносить доходы ее разработчикам
> и франчайзи-прихлебателям
Более того, года три назад, на одной из конференций по 1С я присутсвовал (там кофе на халяву). Так вот дяденька с нехилой должностью в 1С, практически официально признал, что они не против пиратский копий своей программы, так как 80% дохода составляет обслуживание, а не продажа. И чем больше распространится копий, тем больше они (1С) заработают.
← →
Александр1 (2005-01-24 18:01) [51]I>
> Digitman © (24.01.05 15:45) [48]
>
> > Александр1
>
>
> тебе насчет рабства, кажется, уже говорили ?
> неужели ты не понимаешь, что ставить юзера в зависимость
> от твоихкакпризов как минимум не есть корошо ?
> а если у юзера железо, к которому ты привязался, вышло из
> строя и он вынужден заменить это железо ? или юзер апгрейд
> сподобился в кои-то веки сотворить своему железу ? он что,
> не имеет на это право, по-твоему ? или, заплатив уже тебе
> единожды, галопом на поклон к тебе вновь бежать обязан ?
> мол, на тебе , дорогой мой разработчик, еще N денег, только.
> мол, позволь мне после установки нового железа юзать твою
> расчудесную прогу ?
Это не рабство! Во первых на кафедре где я устанавливаю свою прогу железо не меняли и не будут менять наверное никогда. Там стоят Celecon-ы 433. И никто ими не занимается. А если и поменяет кто чего то я им БЕСПЛАТНО прошивку пришлю! Принесу и поставлю. На кафедре пускай работает за так. А Организации, у которых есть деньги покупать проги по 60 тыс руб. На мою за 1-3 тыс р найдётся. Почему я им должен на холяву давать. А если не привязать, то украдут студенты обязательно! И тогда я с этой программы ни копейки вообще не получу!!!! А там ещё столько можно программ по расчёты написать. А получается, не буду, т.к. работать вообще бесплатно я не могу.
← →
Александр1 (2005-01-24 18:02) [52]
> KilkennyCat © (24.01.05 16:23) [50]
> Более того, года три назад, на одной из конференций по 1С
> я присутсвовал (там кофе на халяву). Так вот дяденька с
> нехилой должностью в 1С, практически официально признал,
> что они не против пиратский копий своей программы, так как
> 80% дохода составляет обслуживание, а не продажа. И чем
> больше распространится копий, тем больше они (1С) заработают.
Сравнил меня и фирму. Да ещё 1С! Они в любом случае деньги заработают. Пойми такая уже ситуация была. Я и мой друг вообще ничего не получили. Парились парились и фиг её никто не купил. Т.к. когда мы предложили продать им её, они (3-и организации) сказали, что она у них уже есть. Да действительно есть! Мы сами на практики были видели у них на всех компах наша маленькая программулька! Они даже не знали, что авторы мы. Показали нам между прочем её и говорят вот студенты с кафедры такую программу принесли так хорошо считает вам ни надо ли рублей за 100 дам скачать! Это хулиганство!!!! Меня это просто бесит!
← →
Александр1 (2005-01-24 18:04) [53]Может не будим спорить. Помогите пожалуйста привязать программу к компу. Это действительно надо. Иначе вообще программирование теряет всякий смысл.
← →
Юрий К (2005-01-24 18:46) [54]Пусть строители и платят дополнительно за электронные ключи.
Они же не бедствуют.
Включи стоимость электронных ключей в стоимость программы.
← →
MacroDenS © (2005-01-24 18:51) [55]Может не будим спорить. Помогите пожалуйста привязать программу к компу.
Возьми стальной канат, привари его к корпусу компа, а второй к сейфу, в сейф положи дискету/диск с прогой и исходниками, а код к сейфу забудь навсегда, тогда точно не упрут, да и к железу компа вроде как привязана.
← →
4eshka) (2005-01-24 18:53) [56]
> Может кто знает как прочитать номер материнской платы например
> или ещё что-нибуть?
Loool :)))))
http://www.mitec.cz/ :)
Mitec System Information
← →
Miralex © (2005-01-24 18:57) [57]
> Может не будим спорить. Помогите пожалуйста привязать программу
> к компу. Это действительно надо. Иначе вообще программирование
> теряет всякий смысл.
Это действительно так. И не обращай внимание на яростных противников привязывания программы к железу (винту например). Когда они попадут в твою ситуацию - запоют по другому!
Делай так:
Собирай всю инфу по железу (мать, проц, видяха, винт)
Далее генерируешь ключик, где в нем будет спрятана ета информация. В ключик не забудь досыпать мусора всякого... зашифровать малоизвестным алгоритмом не помешает. ну и тд!
Но смысл следующий:
Дать пользователю иметь возможность частично поменять железо и при етом сохранить работоспособность твоей программы!
А ето делаеться так:
После запуска программы ты будешь заново собирать инфромацию.. проверять ключик.. и реагируй если например пользователь сменил более 50% железа.
В итоге твой покупатель сможет менять свой винт как и свои носки - каждый день! при етом программа будет работать!.. а вот когда он поменяет больше 50% своего железа - тогда ему придеться заново получить ключик!
Т.е пользователь один раз купив программу должен будет сгеренировать какойто промежуточный ключик - в нем будут замешаны серийники железа! а потом, когда он тебе отправит промежуточный ключик - ты ему вышли постоянный!
Как сделать проверку ключа ты найдешь в нете! старайся не использовать if и тд! Также в ключик не забудь подмешать каких нибудь констант твоих формул! При попытке взломать придеться потратить на изучение твоей математики. (иначе при частично неправильном ключе - твоя программа будет считать неправильно). Или же взломщику придеться потратить время на изучение структуры твоего ключика и метода шифрования и тд! В любом случае каждый этап надо хорошо запутывать!
И тд.
Далее думай сам. Главное что я хотел тебе показать - как привязать программу к железу и при этом дать возможность частично менять железо!
← →
maxz © (2005-01-24 19:41) [58]че вас всех на железе зациклило?! в DelphiWorld есть статья по защите от копирования. почему бы ее не попробовать?
← →
KilkennyCat © (2005-01-24 23:41) [59]Вся беда в том, что после драки кулаками не машут. Либо изначально надо планировать коммерческое использование, строить политику, либо теперь просто пытаться извлечь выгоду из создавшейся ситуации. Я бы на Вашем месте написал бы другую прогу, защитил бы ее, и продавал, упоминая в качестве рекламы первую.
← →
Александр1 (2005-01-30 09:30) [60]
> Miralex © (24.01.05 18:57) [57]
Ты гений! Спасибо большое.
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
Память: 0.67 MB
Время: 0.035 c