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