Прежде всего, поймите, что ключ будет лишь небольшим препятствием. Кто-то, кто знает, что делает, просто удалит вызов ключа и вставит «истину» для любого результата, который был вызван. Это вам все скажут. Но есть препятствия, которые вы можете добавить!
Я бы нашел ключевую часть вашего кода, что-то, что сложно или трудно понять, что-то, что требует знания предметной области. Затем поместите это знание на ключ. Одним из примеров этого могут быть шейдерные процедуры. Подпрограммы шейдеров — это текстовые файлы, которые отправляются на графическую карту для достижения определенных эффектов; для реализации очень простого фильтра яркости/контрастности потребуется менее 500 символов, и вы можете сохранить его в пользовательском пространстве на большинстве аппаратных ключей. Затем вы помещаете эту информацию в ключ и используете только информацию из ключа для отображения изображений. Таким образом, если кто-то попытается просто удалить ваш ключ, все изображения в вашей программе будут затемнены. Потребуется, чтобы кто-то имел копию вашей программы, взял текстовый файл из ключа, а затем модифицировал вашу программу, чтобы включить этот текстовый файл, а затем знал, что этот конкретный файл будет «правильным» способом отображения изображений. Особенности реализации зависят от вашей платформы развертывания. Например, если вы запускаете программу в WPF, вы можете сохранить подпрограмму DirectX в своем ключе, а затем загрузить эту подпрограмму из ключа и применить эффект ко всем изображениям в вашем приложении. Затем взломщик должен иметь возможность перехватить эту процедуру DirectX и применить ее должным образом.
Другая возможность состоит в том, чтобы использовать процедуры генерации случайных чисел ключа для разработки UID. Как только кто-то удалит функциональность ключа, все сгенерированные UID будут обнулены.
Однако лучше всего поместить на ключ специфичную для домена функцию (например, всю процедуру генерации UID). Различные производители будут иметь разные возможности в этом отношении.
Сколько препятствий вам дадут эти хитрости? На самом деле, это зависит от популярности вашей программы. Чем популярнее ваша программа, тем больше вероятность того, что кто-то захочет ее взломать и посвятит этому свое время. В этом случае у вас может быть несколько дней, если вы особенно хорошо разбираетесь в кодировании ключей. Если ваша программа не так популярна (скажем, всего несколько сотен клиентов), то просто наличие ключа может быть достаточным сдерживающим фактором без необходимости делать что-то умное.
person
mmr
schedule
25.08.2009