Можно ли удалить операторы .property из файлов ILAsm для производственного использования?

2

По-прежнему работает над моей программой обфускации, основанной на изменении файлов ILAsm. (Ссылка Какие имена методов С# не должны быть запутаны?)

При взгляде на код ILAsm создается впечатление, что операторы .property не используются ни для чего, по крайней мере, для выполнения программы. Правильно ли я думаю, что они существуют только для предоставления метаданных для Visual Studio? И если да, можно ли просто удалить их, когда код ILAsm будет использоваться только для создания производственных модулей, которые никогда не будут использоваться с Visual Studio?

  • 2
    Итак, глупые вопросы: вы пытались удалить его, чтобы увидеть, какой эффект это имеет? Какое исследование вы провели на ILAsm и .property, чтобы увидеть, что, если какой-либо цели он служит?
  • 1
    Может быть, я мог бы попытаться сделать это, и, возможно, это будет нормально, а может позже станет ясно, что это не очень хорошая идея. Поэтому, может быть, разумно попросить совета у людей, которые знают больше меня.
Показать ещё 2 комментария
Теги:
ilasm
il

1 ответ

4
Лучший ответ

Вы правы, что факт что-то объявляется как свойство, не влияет на выполнение программы. Как говорится в книге Внутри Microsoft.NET IL Assembler во введении к главе о свойствах, JIT-компилятор и механизм выполнения полностью не знают свойств, и никакие IL-инструкции не ссылаются на концепцию свойства.

Обратите внимание, что Visual Studio не является единственным потребителем метаданных. Если вы разделите .property и снова соберите, у вас будут методы getter и setter, но это, очевидно, уже не свойство. Самый очевидный пример того, где это становится проблемой: что, если экземпляр объекта передается другому методу, который использует отражение для вызова каждого свойства в классе? Свойства не будут найдены, а поведение во время выполнения изменилось в результате предлагаемого метода обфускации.

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

В последнем выпуске книги, упомянутой выше, есть другое название: Expert.NET 2.0 IL Assembler; это может быть полезной ссылкой на вас. Компиляция для .NET Common Language Runtime также может быть ценной.

  • 0
    Спасибо за ваш очень информативный ответ. Должно быть, это заняло некоторое время, и я это ценю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню