Ваш лучший вариант - упаковать / зашифровать / скрыть DLL, как указал Антон. А потом молитесь, чтобы никто не прошел через все трудности, связанные с распаковкой.
Обычный термин для этого - просто "упаковка".
Это то, что разработчики игр делают с SecuROM .
от Sony.
Но все программы упаковки имеют одинаковые недостатки:
- Они могут быть перепроектированы, и ключ шифрования должен быть встроен в двоичный файл
- Они обычно стоят денег, а те, которые не стоят ( UPX ), легко распаковываются.
- Проблемы с несовместимостью платформ могут возникнуть в процессе распаковки.
- Упакованные двоичные файлы имеют тенденцию выводить антивирусов из строя.
Компании, которые используют упаковщики, обычно поставляют двоичные файлы, которые должны быть в состоянии работать на каждом мыслимом компьютере. Если вы действительно это имели в виду, я думаю, вы могли бы зашифровать каждую dll, поставляемую с уникальным ключом, а затем потребовать, чтобы он был запущен с доступом в Интернет для некоторой магии вызова-ответа на этапе расшифровки. Во всяком случае, перегиб.
Вы могли бы также сделать свой собственный упаковщик, но поверьте мне, когда я говорю это: Вы не хотите идти туда;)
Короче говоря, то, что вы хотите, непросто достичь даже для крупных игроков. Сколько времени нужно, чтобы игра SecuROM появилась на пиратском заливе? Поэтому единственное, что вы можете сделать, - это «поднять планку» и надеяться, что хорошие реверс-инженеры останутся незамеченными.
Наконец, зная, во что вы ввязываетесь: стоит ли это того? Допустим, вы отправили распакованную DLL - как есть. Людям все еще придется перепроектировать это, чтобы использовать это. Кто вообще использует недокументированные сторонние библиотеки? Я делал это только один или два раза в моменты безумия.