шифрование приложения .NET и блоков

getScript - это асинхронный метод , поэтому вам нужно обращаться к его переменным в обратном вызове следующим образом:

$.getScript( "ajax/test.js", function( data, textStatus, jqxhr ) {
  console.log( data ); // Data returned
  console.log( textStatus ); // Success
  console.log( jqxhr.status ); // 200
  console.log( "Load was performed." );
});

Your console.log (wow); был выполнен до полной загрузки скрипта.

6
задан Josh Darnell 4 January 2012 в 19:38
поделиться

3 ответа

Строгое именование блока никогда не разрабатывалось для защиты от взломщика, который управляет машиной. От записи MSDN на подписании задержки:

Следующий пример выключает проверку для блока под названием myAssembly.dll.

sn –Vr myAssembly.dll

Цель дизайна строгих имен состоит в том, чтобы обеспечить уникальность имени и защищать пользователя (не издатель) против взломщика. Если пользователь хочет отключить все проверки строгого имени или возможно даже разделить Вашу подпись и оставить блок с его собственным ключом затем нет с технической точки зрения ничего, чтобы препятствовать тому, чтобы он делал так.

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

Как упомянуто другими плакатами, что Вы ищете, путаница. У Вас, вероятно, уже есть такой инструмент: Visual Studio (по крайней мере, 2005 и 2008) идет с общественным выпуском Dotfuscator Решений PreEmptive. Microsoft также имеет свое собственное "Лицензирование программного обеспечения и Службу защиты" продукт.

Путаница имеет некоторые технические недостатки однако:

  • это может усложнить Ваш процесс сборки. Вам нужны незапутываемый и запутываемая сборка, потому что последний не debuggable.
  • Мне нравится иметь ошибочное диалоговое окно для непредвиденных исключительных ситуаций, где пользователь может нажать "copy details" и отправить мне почту с некоторой технической информацией включая отслеживание стека. С путаницей однако, можно забыть о получении чего-либо полезного от Исключения. StackTrace.
  • если Ваш код использует отражение затем существует хороший шанс, что вещи прервут запутываемую сборку, потому что внутренние имена типов и имена элемента не сохраняются.
8
ответ дан 8 December 2019 в 16:10
поделиться

Подписание Вашего блока лишит возможности изменять его, не изменяя подпись и следовательно ее ссылку. Последствие этого - то, что (сильный именованный) ссылка на блок не решит против измененной версии. И это гарантируется против смешных разногласий.

Это не решает Вашу проблему, все же. Не полностью, так или иначе. Если Вы упакуете свои вызовы аппаратного ключа, скажем, в сборку со строгим именем, то ссылка, что блок из Вашего приложения, приложение не будет работать без Вашего неизменного блока, и следовательно не без аппаратного ключа. Но само приложение может быть изменено!

Другое средство, доступное Вам, является путаницей. Существует бесплатная версия obfuscator, поставленного с Visual Studio, которая может быть обновлена до промышленной силы. Путаница представляет код, непостижимый, не изменяясь, это - поведение и следовательно представляет реальный барьер для инженерного анализа.

Я сказал бы, что решение находится в некоторой умной комбинации этих двух методов.

И это - степень моего знания, я боюсь. Кто-то еще должен будет предоставить фактический ответ здесь (и это, вероятно, смущающе намного короче, чем шахта ;-)

4
ответ дан 8 December 2019 в 16:10
поделиться

Если они исправляют Ваш исполняемый файл, строгое имя не помогает. Это однако поможет Вам удостовериться, что dll, на который Вы ссылаетесь, является правильной версией и не вмешался.
Вы могли бы проверить Саламандру orpreemptive на путаницу.
Шифрование Вы могли бы посмотреть на Сейф блока, CodeVeil или ThinApp

2
ответ дан 8 December 2019 в 16:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: