Вы слишком усложняете логику. DateTime
объекты сравнимы, поэтому вы можете напрямую проверить, находится ли момент времени после / перед другим:
$timezone = new DateTimeZone( 'America/Toronto' );
$start = ( new DateTime( 'monday this week', $timezone ) )->setTime( 18, 0 );
$end = ( new DateTime( 'friday this week', $timezone ) )->setTime( 18, 0 );
$now = new DateTime( 'now', $timezone );
if ( $now > $start && $now < $end ) {
echo "Hello World";
}
Посмотрите на атрибут StrongNameIdentityPermission . Это позволит вам объявить доступ к вашей сборке. В сочетании с хорошим средством защиты кода (например, CodeVeil (заявление об отказе от продажи CodeVeil)) вы будете вполне довольны.
(Обратите внимание, что это, скорее всего, даст вам ложные срабатывания от AV-инструментов.)Несмотря на это, достаточно решительный пользователь все еще может найти способы его использования. Приличный дизассемблер быстро предоставит всю необходимую информацию.
Обратите внимание, что если ваша DLL действительно является COM-объектом или, что еще хуже, сборкой CLR, то существует огромное количество информации о типах среды выполнения, без которой вы не сможете удалить нарушая его предполагаемое использование.
РЕДАКТИРОВАТЬ: Поскольку вы повторно отметили, что C # и .NET являются средой, а не чистой Win32 DLL, написанной на C, тогда я действительно должен изменить вышеприведенное на «You Can» t, но ... "
В течение долгого времени существовал рынок инструментов запутывания для работы в средах, где доставка скомпилированного источника является обязательной, но вы не хотите предоставлять полезный источник. Есть продукты C #, которые играют на этом рынке, и похоже, что по крайней мере один присоединился к ним.
Поскольку загрузка сборки требует от платформы очень больших усилий, вполне вероятно, что есть биты разрешения, которые обеспечивают некоторый контроль для честного поставщики и потребители сборок. Я не видел никакого обсуждения реальной безопасности, обеспечиваемой этими методами, и просто не знаю, насколько они эффективны против решительной атаки.
Многое будет зависеть от вашего варианта использования. Если вы просто хотите предотвратить случайное использование, вы можете найти решение, которое подходит именно вам. Если вы хотите защитить ценные торговые секреты от обратного проектирования и повторного использования, вы, возможно, не будете так счастливы.
вполне вероятно, что есть биты разрешений, которые обеспечивают некоторый контроль для честных поставщиков и потребителей сборок. Я не видел никакого обсуждения реальной безопасности, обеспечиваемой этими методами, и просто не знаю, насколько они эффективны против решительной атаки.Многое будет зависеть от вашего варианта использования. Если вы просто хотите предотвратить случайное использование, вы можете найти решение, которое подходит именно вам. Если вы хотите защитить ценные торговые секреты от обратного проектирования и повторного использования, вы, возможно, не будете так счастливы.
вполне вероятно, что есть биты разрешений, которые обеспечивают некоторый контроль для честных поставщиков и потребителей сборок. Я не видел никакого обсуждения реальной безопасности, обеспечиваемой этими методами, и просто не знаю, насколько они эффективны против решительной атаки.Многое будет зависеть от вашего варианта использования. Если вы просто хотите предотвратить случайное использование, вы можете найти решение, которое подходит именно вам. Если вы хотите защитить ценные торговые секреты от обратного проектирования и повторного использования, вы, возможно, не будете так счастливы.
Если вы просто хотите предотвратить случайное использование, вы можете найти решение, которое подходит именно вам. Если вы хотите защитить ценные торговые секреты от обратного проектирования и повторного использования, вы, возможно, не будете так счастливы. Если вы просто хотите предотвратить случайное использование, вы можете найти решение, которое подходит именно вам. Если вы хотите защитить ценные торговые секреты от обратного проектирования и повторного использования, вы, возможно, не будете так счастливы.Вы столкнулись с той же проблемой, что и сторонники DRM.
Если ваша программа (которую вы хотите иметь возможность запускать DLL), может быть запущена некоторыми пользовательская учетная запись, то нет ничего, что могло бы помешать достаточно определенному программисту, который может войти в систему как этот пользователь, изолировать код, который выполняет дешифрование, и использовать его для расшифровки вашей DLL и ее запуска.
Вы, конечно, можете сделать это неудобным для выполнения обратного инжиниринга, и этого вполне может быть достаточно.
Вы можете встроить его в свой исполняемый файл, а также извлечь и загрузить библиотеку во время выполнения и позвоните в него. Или вы можете использовать какой-то общий ключ для шифрования / дешифрования сопровождающего файла и сделать то же самое выше.
Я предполагаю, что вы уже рассматривали такие решения, как его компиляция, если вы действительно не хотите, чтобы он делился. Если кто-то действительно хочет добраться до этого, есть много способов сделать это.
Вас может заинтересовать следующая информация о собраниях друзей: http://msdn.microsoft.com/en-us/library/0tke9fxk (VS.80) .aspx
Посмотрите на StrongNameIdentityPermissionAttribute . Это позволит вам объявить доступ к вашей сборке. В сочетании с хорошим средством защиты кода (например, CodeVeil (заявление об отказе от продажи CodeVeil)) вы будете вполне довольны.
Что ж, вы можете пометить все ваши «публичные» классы как «внутренние» или «защищенные внутренние», а затем пометить ваши сборки атрибутом [assembly: InternalsVisibleTo ("")] и никого, кроме помеченные сборки могут видеть содержимое.
Вы пробовали реактор .Net? Недавно наткнулся на это. Некоторые говорят, что он отличный, но я все еще тестирую его.