Это похоже на проблему XY . Использование файла, защищенного паролем, для защиты от копирования возможно, но не лучший способ сделать это:
- Ключ для файла должен быть аппаратно закодирован в программе. Есть способы скрыть это, но это не гарантируется. Если вы распаковываете его из памяти, вы используете Assembly.Load для передачи выполнения без запуска нового процесса. См. как загрузить сборку из памяти . Или вы можете попробовать метод, предложенный @Klaus Gütter, и запустить загрузить exe из памяти
- Даже если вы загружаете сборку из памяти, пользователь все равно может использовать отладчик или дамп памяти извлечь программу.
Мне это кажется сложным по сравнению с обычным методом защиты от копирования . т.е. используйте шифрование asymmetri c для кодирования некоторых данных. Загрузите эти данные при запуске приложения и убедитесь, что они верны. Таким образом, у пользователя нет возможности узнать ключ шифрования. Он все еще может редактировать программу, чтобы убрать проверки, но предотвратить это невозможно.
Вы можете включить спецификацию машины c id в данные, чтобы привязать лицензию к машине. Вы также можете использовать какую-либо онлайн-активацию, чтобы проверить правильность ключа. Вы также можете использовать различные продукты для запутывания кода, чтобы усложнить обратную разработку кода.
Имейте в виду, что абсолютная защита невозможна. Все это делается для того, чтобы обойти защиту от копирования дороже, чем покупать ее. И я бы сказал, что для большинства продуктов предотвращения случайного копирования будет достаточно.