Недавно я решил использовать OnGuard как способ помочь честным людям соблюдать их принципы. Я согласен с мнением, высказанным здесь многими, что ни одна система лицензирования не защитит вас от того, кто хочет использовать ваше программное обеспечение и не хочет за него платить. С другой стороны, я бы не хотел, чтобы кто-то еще слишком легко создавал действительные ключи для моей программы.
Изучив руководство и примеры, я добавил в код своей основной формы следующее:
const
TheKey: TKey = ($4A,$62,$F3,$2B,$9C,$D2,$84,$BF,$CB,$04,$0A,$C3,$3D,$11,$47,$1A);
function TfrmMain1.MakeCode(sName, sNumber: String; dtExpiration: TDate): String;
var Key: TKey;
Code: TCode;
sCode: String;
begin
Key := TheKey;
InitRegCode(Key, sName + ' - ' + sNumber, dtExpiration, Code);
sCode := BufferToHex(Code, SizeOf(Code));
Insert('-', sCode, 13);
Insert('-', sCode, 09);
Insert('-', sCode, 05);
Result := sCode
end;
function TfrmMain1.TestCode(sName, sNumber, sTestCode: String; dtExpiration: TDate): Boolean;
var Key: TKey;
Code: TCode;
sCode: String;
begin
sCode := MakeCode(sName, sNumber, dtExpiration);
Result := SameText(sCode, sTestCode);
end;
Это поднимает некоторые вопросы:
Кажется ли вам правильным использовать это? Я бы предпочел не добавлять их компоненты в мою форму.
Поскольку исходный код OnGuard доступен, не может ли хакер-реверс-инженер Ключ, который я выберу, и создать действительные коды выпуска? Должен ли я поэтому добавить некоторую дополнительную запутанность в код или я могу просто ослабить систему.
Ключ устанавливается здесь как константа. Разве это не будет показано в коде как непрерывные байты и будет легко скопировать?
Моя программа потребует (как минимум) ежегодных обновлений, и я планирую лицензировать ее с годовой подпиской. Будет ли правильнее добавить год в моей программе в качестве константы и протестировать записи пользователей с датами по отношению к этому году в нескольких местах.
Здесь есть 4 вопроса, которые тесно связаны и довольно специфичны. Казалось, что было бы более неловко задавать вопросы в четырех отдельных записях и добавлять ссылки на контекст, но я буду рад сделать это, если это будет предпочтительнее. Спасибо за вашу помощь.
Джек