Имена методов становятся скомпилированными в EXE?

Оказывается

    else:
        mt.addUIMessage("")
except Exception as e:
    mt.addUIMessage(str(e))

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

6
задан svick 6 May 2016 в 00:03
поделиться

7 ответов

Да, они находятся в IL - включают Отражатель, и Вы будете видеть их. Если бы они не закончили в IL, то Вы не могли бы создать против них как библиотеки. (И да, можно сослаться на .exe файлы, как будто они были библиотеками классов.)

Однако это все разрешено однажды в JIT.

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

Править: Что касается какого включало - почему не только запускают Отражатель или ildasm и узнают? Из памяти Вы теряете имена локальной переменной (которые находятся в pdb файле, если Вы создаете его), но это об этом. Имена закрытого метода и имена частной переменной все еще там.

20
ответ дан 8 December 2019 в 03:55
поделиться

Да, они делают. Я не думаю, что будет известное увеличение производительности при помощи более коротких имен. Нет никакого способа, которым усиление преодолевает потерю удобочитаемости.

3
ответ дан 8 December 2019 в 03:55
поделиться

Локальные переменные не включены в MSIL. Поля, методы, классы и т.д. Переменные являются базирующимся индексом.

1
ответ дан 8 December 2019 в 03:55
поделиться
  • Сохраните имена короткой, лучшей производительностью для именованного поиска.

Как это могло иметь какое-либо значение? Я не уверен, как идентификаторы ищутся VM, но я вполне уверен, он не делает прямого поиска сравнения строк. Это было бы худшим способом сделать это.

  • Сохраните имена загадочными, тяжелее для декомпиляции.

Честно говоря, я не думаю, что запутанность кода помогает так многому. Большинство компетентных разработчиков там уже разработало "шестое чувство" выяснить вещи быстро, даже если идентификаторы как имена методов полностью бесполезны с тех пор очень часто исходный код, который они должны поддержать или улучшить, уже имеет эти проблемы (я говорю об именах методов как "DoAllStuff ()").

Так или иначе безопасность через мрак обычно является плохой идеей.

1
ответ дан 8 December 2019 в 03:55
поделиться

Имена элемента действительно становятся включенными в IL, являются ли они частными или общедоступными. На самом деле весь Ваш код включен также, и если Вы использовали бы Отражатель, можно практически считать весь исходный код приложения. То, что оставляют, отлаживает приложение, и я думаю, что могли бы быть инструменты для этого.

Вы должны АБСОЛЮТНО (и я не могу подчеркнуть это больше), запутывают Ваш код, если Вы делаете пакетные приложения, которые имеют много клиентов и конкуренции. К счастью существуют много obfuscators доступны.

Это - главное схватывание, которое я имею с .NET. Так как MS делает такую тяжелую работу на этом, почему бы не разработать (или получите), профессиональный obfuscator и делает это частью VS. Dotfuscator просто не сокращает его, не версия, которую они имеют для сообщества.

1
ответ дан 8 December 2019 в 03:55
поделиться

Я думаю, что они добавляются, но длина имени не собирается влиять на что-либо из-за способа, которым ищутся имена функций. Что касается путаницы, я думаю, что существуют инструменты (Dotfuscator или что-то как этот), которые в основном делают точно, что Вы говорите.

0
ответ дан 8 December 2019 в 03:55
поделиться

Если Вы обеспокоены Реактором.NET выезда путаницы. Я протестировал 8 различных obfuscators, и Реактор не был только самым дешевым коммерческим, это был второстепенный вариант набора (лучшим был самый дорогой, Золото Dotfuscator).

[Править]

На самом деле теперь, когда я думаю о нем, если все, о чем Вы заботитесь, запутывает имена методов затем тот, который идет с VS.NET, Выпуском Сообщества Dotfuscator, должен хорошо работать.

1
ответ дан 8 December 2019 в 03:55
поделиться
Другие вопросы по тегам:

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