Как мне безопасно использовать обфускатор? - PullRequest
3 голосов
/ 23 апреля 2009

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

Ответы [ 3 ]

10 голосов
/ 23 апреля 2009

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

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

9 голосов
/ 23 апреля 2009

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

например, если у вас есть класс, который используется в качестве прокси-сервера веб-службы, вы не можете смутно скрыть имя класса:

public class MyWebServiceProxy : SoapHttpClientProtocol
{

}

Также некоторые обфускаторы не могут обрабатывать универсальные методы и классы.

Хитрость в том, что вам нужно найти эти типы и не дать обфускатору переименовать их. Это делается с помощью атрибута обфускации:

[global::System.Reflection.Obfuscation(Exclude=true, Feature="renaming")]
0 голосов
/ 23 апреля 2009

Еще одна проблема, которая может быть проблемой с обфускаторами, - это сериализация с использованием BinaryFormatter, поскольку она меняет имена полей. У меня есть несколько пользователей, которые по этой причине используют protobuf-net для сериализации своего запутанного кода.

...