Генерация нативных изображений вне кеша
Я хотел бы использовать NGEN.EXE
для создания собственных образов моих сборок, прежде чем я создам свой установщик. Я надеюсь, что это будет держать мои файлы Reflector
-доказательство. Я прав по этому поводу?
Я только что понял, что все нативные изображения теперь хранятся в Native Image Cache. Есть ли способ получить собственные двоичные файлы, которые я могу затем упаковать с помощью установщика? С другой стороны, возможно ли избавиться от оригинальных сборок после генерации собственных образов?
РЕДАКТИРОВАТЬ: я использую приложение, которое использует жестко закодированный ключ для шифрования при разговоре с сервером. С.NET людям смехотворно легко достать ключ.
5 ответов
Это очень не поддерживается NGEN и.net framework, но есть сторонние инструменты, которые могут это сделать, google для ".net linker".
Я рекомендую не делать этого, у MS есть веские причины не поддерживать это.
Я вижу несколько проблем с тем, что вы пытаетесь достичь.
1) Как уже упоминалось @Mehrdad, сборка все еще требуется для метаданных, даже если существует собственное изображение.
2) Нативный образ действителен только на том компьютере, на котором он был скомпилирован. JIT-компилятор выполняет оптимизацию, которая обычно не может быть выполнена, потому что он точно знает, на каком оборудовании должен работать код.
3) Даже собственное изображение может быть декомпилировано. Просто немного проще взять appart управляемого dll.
Не могли бы вы рассказать нам, почему вы хотите скрыть свой исходный код?
РЕДАКТИРОВАТЬ: Судя по тому, как быстро каждая новая версия WGA будет взломана, я подозреваю, что если ваше программное обеспечение будет удаленно полезным, кто-то получит ключ и в Интернете (или p2p или что-то еще) в течение нескольких часов после каждой новой версии вашего программного обеспечения, и они будут людьми, которые с удовольствием разбирают родной образ. Или, может быть, просто читать машинный код:)
Мой личный подход - убедиться, что ваше приложение работает хорошо и по справедливой цене. Честные люди не украдут его, нечестные найдут выход независимо от того, что вы делаете. В конечном счете, если у вас есть приложение для запуска, вы ничего не можете сделать, чтобы полностью контролировать то, что они с ним делают, хотя вы можете немного усложнить им использование отражателя, сначала используя обфускатор, но в конце концов, это как настоящая жизнь действительно, замки только не пускают честных людей.
Конечно, если вы можете переместить некоторую важную часть функциональности ваших приложений из клиента в веб-сервис, у вас больше шансов. Вы можете создавать учетные записи с именами пользователей и паролями для клиентов, приложение запрашивает это при запуске и использует его для аутентификации в веб-службе. Если срок их использования этого приложения истек, веб-служба отклоняет их запрос.
Вы не можете отправить только изображение Ngen сборки. Среда выполнения по-прежнему требует наличия фактической сборки, даже если она имеет собственный образ. Причина в том, что метаданные сборки не переносятся на собственное изображение.
Получить этот список программного обеспечения:
- {} Smartassembly
- DeployLX CodeVeil
- Дотфускатор.NET Обфускатор
- Саламандра.NET Обфускатор
- Семантические конструкции: Обфускатор исходного кода C#
- Spices.Net
- Thinstall
- Поведение для.NET
- .NET Reactor
- IntelliLock
- Eazfuscator.NET
- SecureTeam CliSecure
Это обфускаторы + линкеры.
Там нет причин, почему вы должны использовать нативное изображение. Этот инструмент предназначен для разработки, чтобы ускорить вещи. Это не приложение, это изображение, которое изменяет ЦП компьютера. Конфигурация Dot Net сделает ваш образ недействительным, поэтому его нельзя будет использовать. Взломать ваше программное обеспечение возможно, любое программное обеспечение взломано, есть такие, которых не было? Не волнуйтесь о пиратстве, предположим, что оно существует:)