Запутанная сборка DotFuscator дает неверный результат API

Я новичок в запутывании. Я использую инструмент DotFuscator для запутывания в комплекте с Visual Studio 2010.

У меня есть один веб-сервис с несколькими API. Этот сервис, когда публикуется нормально, все API работают нормально и дают ожидаемый результат.

Но когда я запутываю библиотеки DLL и публикую службу, все API переходят в блок Catch и выдают ошибку, когда я запускаю любой API из этой службы.

Кроме того, я попытался при запутывании библиотек DLL отключить свойство ПЕРЕИМЕНОВАНИЕ. Все API работают нормально. Но тогда в обфускации нет смысла, поскольку в DLL ничего не переименовывается, и можно легко получить весь код в DLL.

Есть ли какое-либо свойство или параметр, который мне не хватает при запутывании библиотек DLL??


person Robin Purbia    schedule 30.08.2015    source источник


Ответы (1)


При запутывании важно, чтобы любой класс, метод и свойство, которые доступны извне, либо через ссылку на сборку, либо, в вашем случае, через API веб-сервиса (который под капотом опирается на сериализацию xml), не переименовывались.

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

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

Или, если вы хотите, чтобы сообщения было трудно читать в сети, запутайте весь контракт, но используйте одни и те же запутанные сборки как на клиенте, так и на сервере. Вот так и говорят ту же "ерунду". Важно, чтобы средство запутывания понимало протокол сериализации, чтобы, например, оно не генерировало имена, несовместимые с XML.

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

Дело в том, что многие банки и больницы используют стандартный протокол для сериализации, объекты в сети хорошо известны, но сила программного обеспечения не в сообщениях, которые передаются из A->B, а в алгоритмах и действиях. которые приходят от отправки и получения этих сообщений. Обфускация помогает защитить этот важный IP-адрес.

Из часто задаваемых вопросов Dotfuscator:

Как Dotfuscator работает с библиотеками API?

Вы по-прежнему можете воспользоваться преимуществом переименования непубличных типов, методов и полей. В этом отношении обфускация Dotfuscator очень настраивается. Dotfuscator имеет удобную опцию «Библиотека», которая автоматически предотвращает переименование всех общедоступных методов. Если это не совсем подходит для вашего приложения, вы можете настроить правила исключения на различных уровнях детализации. Не говоря уже об обфускации потока управления и шифровании строк, которые имеют большое значение для защиты кода без переименования.

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

person jessehouwing    schedule 30.08.2015