Генерация нативных изображений вне кеша - PullRequest
4 голосов
/ 25 февраля 2009

Я хотел бы использовать NGEN.EXE для генерации собственных образов моих сборок до того, как я создам свой установщик. Я надеюсь, что это сохранит мои двоичные файлы Reflector. Правильно ли я об этом?

Я только что понял, что все собственные изображения теперь хранятся в Native Image Cache. Есть ли способ получить собственные двоичные файлы, которые я могу затем упаковать с помощью установщика? С другой стороны, возможно ли избавиться от исходных сборок после создания собственных образов?

РЕДАКТИРОВАТЬ: Я использую приложение, которое использует жестко закодированный ключ для шифрования при разговоре с сервером. С .NET людям невероятно легко возложить руки на ключ.

Ответы [ 5 ]

5 голосов
/ 25 февраля 2009

Я вижу несколько проблем с тем, чего вы пытаетесь достичь.

1) Как уже упоминалось @Mehrdad, сборка все еще требуется для метаданных, даже если существует собственное изображение.
2) Собственный образ действителен только на том компьютере, на котором он был скомпилирован. JIT-компилятор выполняет оптимизацию, которая обычно не может быть выполнена, потому что он точно знает, на каком оборудовании должен работать код.
3) Даже собственное изображение может быть декомпилировано. Просто немного проще взять appart управляемого dll.

Не могли бы вы сказать нам, почему вы хотите скрыть свой исходный код?

EDIT: Судя по тому, как быстро каждая новая версия WGA будет взломана, я подозреваю, что если ваше программное обеспечение будет удаленно полезным, у кого-то будет ключ и Интернет (или p2p или любой другой) в течение нескольких часов после каждой новой версии вашего программного обеспечения, и они будут люди, которые с удовольствием разбирают родной образ. Или, может быть, просто прочитайте машинный код:)
Мой личный подход - убедиться, что ваше приложение работает хорошо и по справедливой цене. Честные люди не украдут его, нечестные найдут выход независимо от того, что вы делаете. В конечном счете, если у вас есть приложение для запуска, вы ничего не можете сделать, чтобы полностью контролировать то, что они с ним делают, хотя вы можете немного затруднить им использование отражателя, сначала используя обфускатор, но, в конце концов, это так же, как в реальной жизни. на самом деле, замки только не пускают честных людей.

Конечно, если вы можете переместить некоторую важную часть функциональности ваших приложений из клиента в веб-сервис, у вас больше шансов. Вы можете создавать учетные записи с именами пользователей и паролями для клиентов, приложение запрашивает это при запуске и использует его для аутентификации в веб-службе. Если срок их использования этого приложения истек, веб-служба отклоняет их запрос.

3 голосов
/ 25 февраля 2009

Это очень не поддерживается NGEN и .net framework, но есть сторонние инструменты, которые могут это сделать, Google для ".net linker".

Я рекомендую не делать этого, у MS есть веские причины не поддерживать это.

2 голосов
/ 14 февраля 2011

Получить этот список программного обеспечения:

  • {smartassembly}
  • DeployLX CodeVeil
  • Дотфускатор .NET Obfuscator
  • Саламандра .NET Obfuscator
  • Семантические конструкции: Обфускатор исходного кода C #
  • Spices.Net
  • Thinstall
  • поведение для .NET
  • .NET Reactor
  • IntelliLock
  • Eazfuscator.NET
  • SecureTeam CliSecure

Это обфускаторы + линкеры.

2 голосов
/ 25 февраля 2009

Вы не можете отправить только изображение ngen сборки. Среда выполнения по-прежнему требует наличия фактической сборки, даже если она имеет собственный образ. Причина в том, что метаданные сборки не переносятся на собственное изображение.

1 голос
/ 12 марта 2009

Нет причин, по которым вы должны использовать Native image. Этот инструмент предназначен для разработки, чтобы ускорить вещи. Это не приложение, это изображение, которое изменяет ЦП компьютера. Конфигурация Dot Net сделает ваш образ недействительным, поэтому его нельзя будет использовать. Взломать ваше программное обеспечение возможно, любое программное обеспечение взломано, есть такие, которых не было? Не волнуйтесь о пиратстве, предположим, что оно существует:

...