Вручную запутывающий код? - PullRequest
4 голосов
/ 24 ноября 2010

Что вы думаете о переименовании всех моих классов, свойств, методов и т. Д. В такие вещи, как _, __ или ___?Насколько близко это будет к тому, что обфускатор C # (например, Dotfuscator или Eazfuscator) будет делать с моим приложением, и что еще я могу сделать вручную (на разумное количество времени), чтобы сделать мой код как можно более запутанным?Причина, по которой я хочу это сделать, состоит в том, что обфускатор испортит мою привязку данных и потому, что они не запутывают приложения, опубликованные с ClickOnce (если я не делаю некоторые экспертные вещи с манифестами и другие вещи, которые я не знаю, как делатьи что никто, кажется, действительно не знает наверняка, всегда ли это работает).

Ответы [ 5 ]

2 голосов
/ 29 ноября 2010

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

Я не знаю, как работает ваша привязка данных, но если выжестко закодированные имена свойств как строки в вашем исходном коде на C #, тогда я бы заменил жестко закодированные строки на lamdas для идентификации свойства.Это также более удобно для рефакторинга.

Получить имя свойства внутри сеттера

2 голосов
/ 24 ноября 2010

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

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

2 голосов
/ 24 ноября 2010

Вы должны скрыть ваше заявление.Чтобы избежать ошибок привязки данных, ряд Обфускаторов теперь предоставляют значения по умолчанию для скрытия silverlight / wpf, которые помогут вам избежать этих ошибок.После обфускации вы можете сделать установщик clickonce, используя mage.exe
http://msdn.microsoft.com/en-us/library/xc3tc5xx.aspx
Серьезно НЕ переименовывайте.Вы делаете свою жизнь сложнее.На самом деле так сложно, как им кажется, вы не хотите красть свой код.
Это всего лишь один файл bat, чтобы сделать clickonce после сборки.

1 голос
/ 24 ноября 2010

Абсолютно необходимо поддерживать ClickOnce? Есть и другие способы распространения приложения. Подумайте о компиляции кода, используя ваш обфускатор, а затем создайте установщик, используя что-то вроде Inno Setup .

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

0 голосов
/ 24 ноября 2010

Бесплатная версия Babel.NET работала для меня довольно хорошо, она запутывала внутренний код функций и переименовывала все частные и внутренние классы и члены.Мы используем рефлексию, сериализацию и привязку данных, и это не мешало ни одному из них.
Он также поддерживает интеграцию с MSBuild, что, я считаю, поможет справиться с последним поколением ClickOnce.

...