Инструменты / стратегия запутывания .NET [закрыто]


160

Мой продукт состоит из нескольких компонентов: ASP.NET, Windows Forms App и Windows Service. Примерно 95% кода написано на VB.NET.

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

То, что я знаю, я должен искать до сих пор:

  • Сериализация / Десериализация . В моем текущем решении я просто говорю инструменту не запутывать никакие члены данных класса, потому что боль невозможности загружать данные, которые были ранее сериализованы, просто слишком велика.
  • Интеграция с процессом сборки
  • Работа с ASP.NET . В прошлом я находил это проблематичным из-за изменения имен .dll (у вас часто есть по одному на страницу) - что не все инструменты обрабатывают хорошо.

Несколько дубликатов: google.com/…
Джон Раш


См. Agile.net .NET Obfuscator для альтернативного решения для запутывания вашего кода. В частности, проверьте его функцию виртуализации кода.
Саттон Бернард

Смотрите хороший список обфускаторов от ArmDot до Xenocode здесь на SO: stackoverflow.com/a/60054/1480104
Артем Разин

Ответы:


44

Возвращение к .Net 1.1 было необходимо, чтобы обфускация была простой: декомпиляция кода была простой, и вы могли перейти от ассемблера к IL, к коду C # и снова скомпилировать его без особых усилий.

Теперь с .Net 3.5 я совсем не уверен. Попробуйте декомпилировать сборку 3.5; то, что вы получаете, очень далеко от компиляции.

Добавьте оптимизацию от 3.5 (намного лучше, чем 1.1) и то, как анонимные типы, делегаты и т. Д. Обрабатываются с помощью рефлексии (это кошмар для перекомпиляции). Добавьте лямбда-выражения, «магию» компилятора, такую ​​как синтаксис Linq и var, и функции C # 2 yield(что приводит к появлению новых классов с нечитаемыми именами). Ваш декомпилированный код заканчивает длинный путь от компилируемого.

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

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


128
Совершенно не согласен. Подписание не может заменить запутывание. Целью подписи является взлом вашего кода. Но если вам, что скрывать свои идеи, алгоритмы и т. Д., Запутывание является единственным способом.
Шрайк

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

6
Запутывание может не стоить того, если вы говорите о команде, у которой много ресурсов, но затуманивание отлично подходит для защиты от «среднего» разработчика, который ничего не хочет, кроме как использовать Reflector для открытия вашей сборки и сохранения исходного кода. как проект и внесение коррективов. У запутывания есть свое место, и полностью исключать его - неправильное отношение. Это слой защиты.
Бритва

5
Когда вы декомпилируете, источник находится в грязном состоянии, но логически он все равно следует тем же путям. Не существует компилятора «волшебного» вуду. Я знаю, потому что я недавно потерял хранилище и использовал отражатель для восстановления исходного кода. Запутывание - это только боль в «поддержке», если она не является частью вашего процесса сборки. Это добавляет накладных расходов, но все ли мы пишем приложения с интенсивными вычислениями? Нет, это слабый слой защиты для слабого атакующего.
Бритва

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

50

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

Мы попробовали DotFuscator Pro, SmartAssembly, XenoCode, Salamander и несколько небольших временных приложений, чьи имена избегают меня.

Честно говоря, я убежден, что запутывание это большой взлом.

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


14
Браво Иуда! Единственный способ остаться впереди - это разработать новый, лучший код, не цепляясь за код, который вы уже написали. В итоге вы вкладываете время, усилия и, возможно, даже деньги в то, что не имеет значения. Запутывание не стоит.
Дэвид Руттен

180
Вот почему мне не нравится эта система репутации, у вас есть 19 голосов, и вы не предоставили ответ. Пользователь не спрашивает ваше мнение о запутывании, он хочет узнать больше о методах запутывания.
backslash17

32
Я предоставил информацию о своем опыте, используя несколько существующих обфускаторов. И мое мнение вытекает из этого опыта.
Иуда Габриэль Химанго

6
+1 за «Честно говоря, я убежден, что запутывание это большой взлом». Вы не могли бы сказать это лучше, чем это.
Андрей Ринея

15
Очень серьезная потребность в защите вашего кода - продажа дорогих специализированных приложений компаниям, которые будут использовать их для внутреннего пользования всего с несколькими пользователями. Соблазн состоит в том, чтобы полностью изменить код, чтобы разрешить внутренний взлом и модификации для своих собственных целей, избежать контрактов на техническое обслуживание или даже взломать пробные версии, чтобы получить полезные вещи, которые им нужны.
Брейди Мориц

44

Сейчас я в этом «колено глубоко», пытаясь найти хорошее решение. Вот мои впечатления пока.

Xenocode - у меня есть старая лицензия на Xenocode2005, которую я использовал для обфусцирования своих сборок .net 2.0. Он хорошо работал на XP и был приличным решением. Мой текущий проект - .net 3.5, и я нахожусь на Vista, поддержка сказала мне попробовать, но версия 2005 года даже не работает на Vista (сбои), поэтому я и теперь я должен купить 'PostBuild2008' по невероятной цене 1900 долларов. Это может быть хорошим инструментом, но я не собираюсь это выяснять. Слишком дорогой.

Reactor.Net - Это гораздо более привлекательная цена, и она отлично работала на моем автономном исполняемом файле. Модуль «Лицензирование» тоже был приятным и сэкономил мне кучу усилий. К сожалению, в нем отсутствует ключевая функция, а именно способность исключать вещи из запутывания. Это делает невозможным достижение нужного мне результата (объединяйте несколько сборок вместе, запутывайте одни, не запутывайте другие).

SmartAssembly - я скачал Eval для этого, и он работал безупречно. Я смог достичь всего, чего хотел, и интерфейс был первым классом. Ценовой пункт все еще немного здоровен.

Dotfuscator Pro - Не удалось найти цену на веб-сайте. В настоящее время в обсуждениях, чтобы получить цитату. Звучит зловеще.

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

Примечание: ConfuserEx, как сообщается, «сломан» в соответствии с проблемой № 498 в репозитории GitHub.


8
Вы можете опубликовать, сколько цитат dotfuscator?
Энтони Джонстон

6
@Anthony Я недавно купил лицензию в начале 2011 года. Стоимость $ 2475 за минимальную 1 машину сборки + 1 лицензия разработчика. Включает 12 месяцев обновлений и поддержки.
Йоши

2
Когда я писал этот пост, я не использовал .NET Reactor, но теперь вы можете исключить части своего кода из обфускации, используя атрибут System.Reflection.Obfuscation. Есть также некоторые настройки, которые позволяют вам делать такие вещи, как исключение всех методов или всех сериализуемых типов.
день

5
DotFuscator указал мне 4999 долларов, которые были снижены до 4500 долларов из-за 10% скидки. Это было для лицензий 1 dev! В обсуждениях это было уменьшено до 2500 долларов, но все еще слишком дорого.
Оливер

3
В .NET Reactor появился редактор правил исключения, позволяющий исключить определенные классы, методы или свойства из обфускации. Кроме того, вы можете использовать флажок «Только слияние», чтобы исключить конкретную DLL из обфускации
avitenberg

23

Если вы ищете бесплатную версию, вы можете попробовать DotObfuscator Community Edition, который поставляется с Visual Studio или Eazfuscator.NET .


С 29 июня 2012 года Eazfuscator.NET стал коммерческим. Последняя бесплатная доступная версия 3.3.


18

Я использую smartassembly. В основном, вы выбираете dll, и он возвращает его запутанным. Кажется, работает нормально, и у меня до сих пор не было проблем. Очень, очень прост в использовании.


6
Смарт-сборка совершенно бесполезна. Взломщик помещает ваше приложение в DumbAssembly, и вся «защита» удаляется одним щелчком мыши: woodmann.com/collaborative/tools/index.php/Dumbassembly
Elmue

2
На данный момент безопасный просмотр Google помечает сайт Woodmann как небезопасный. Кроме того, на сайте Вудманна есть целая статья о том, что он ранее страдал от заражения вредоносным ПО, поэтому я не хочу переходить на его сайт, когда Google не доверяет ему.
Брайан,

10

Я попробовал почти каждый обфускатор на рынке, и SmartAssembly - лучший на мой взгляд.


6
Смарт-сборка совершенно бесполезна. Взломщик помещает ваше приложение в DumbAssembly, и вся «защита» удаляется с помощью щелчка мыши: woodmann.com/collaborative/tools/index.php/Dumbassembly
Elmue

3
На данный момент безопасный просмотр Google помечает сайт Woodmann как небезопасный. Кроме того, на сайте Вудманна есть целая статья о том, что он ранее страдал от заражения вредоносным ПО, поэтому я не хочу переходить на его сайт, когда Google не доверяет ему.
Брайан,

9

Я также использую SmartAssembly. Я обнаружил, что Ezrinz .Net Reactor намного лучше для меня в приложениях .net. Он запутывает, поддерживает Mono, объединяет сборки, а также имеет очень хороший модуль лицензирования для создания пробной версии или привязки лицензии к конкретной машине (очень легко внедрить). Цена также очень конкурентоспособна, и когда мне нужна поддержка, они быстро. Eziriz

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


У меня есть несколько друзей, которые клянутся .Net Reactor - хотя и не на сайте продуктов, есть и полезная группа Google для продукта: groups.google.com/group/net-reactor-users?hl=en
Bittercoder

2
+1 для Эзириза. У меня были отличные результаты с этим. Это лучшее, что есть сейчас, ИМО.
Друид

4
Реактор .NET отстой. Я сменил свой компьютер, дважды отправил электронное письмо о файле лицензии и не получил ответа. Вы видите, что лицензия .NET Reactor заблокирована аппаратно.
OrElse

2
Это нормально. Как вы ожидаете, что они вам верят? Откуда они знают, что вы действительно изменили свой компьютер и не пытаетесь запустить лицензию вашего друга на вашем компьютере? Для этого аппаратный замок! Если бы его можно было использовать на нескольких компьютерах, аппаратная блокировка была бы бесполезна.
Эльму

(PS. Мы выбрали Reactor в основном на основе этого ответа SO.)
Крис

7

Короткий ответ: ты не можешь.

Существуют различные инструменты, которые затруднят чтение вашего кода - некоторые из них были указаны в других ответах.

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


51
if (усилия. Требуется> codeFromScratch.Costs) DoNoReverseEngineer ();
Николас Дориер

41
@NicolasDorier,Operator '>' cannot be applied to operands of type 'System.TimeSpan' and 'decimal'
Амини

21
@Saeb уверен, что может, перевод с TimeSpan на деньги (десятичные) - это то, чем занимается большинство компаний.
Hultqvist

6

У нас есть многоуровневое приложение с интерфейсом asp.net и winform, которое также поддерживает удаленное взаимодействие. У меня не было проблем с использованием какого-либо обфускатора, за исключением типа шифрования, который генерирует загрузчик, который может быть проблематичным во всевозможных неожиданных способах и просто не стоит этого, по моему мнению. На самом деле мой совет был бы больше похож на «Избегайте шифрования обфускаторов типа загрузчика, таких как чума». :)

По моему опыту, любой обфускатор будет отлично работать с любым аспектом .net, включая asp.net и удаленное взаимодействие, вам просто нужно ознакомиться с настройками и узнать, как далеко вы можете продвинуть его в какие области вашего кода. И потратьте время, чтобы попробовать реверс-инжиниринг того, что вы получите, и посмотрите, как это работает с различными настройками.

Мы несколько лет использовали в наших коммерческих приложениях и остановились на Spices obfuscator от 9rays.net, потому что цена правильная, она справляется со своей работой, и они имеют хорошую поддержку, хотя нам уже давно не нужна поддержка, но, честно говоря, Я не думаю, что действительно важно, какой обфускатор вы используете, проблемы и кривая обучения одинаковы, если вы хотите, чтобы он работал должным образом с remoting и asp.net.

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

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

Это действительно легко зайти слишком далеко и оказать негативное влияние на ваших клиентов и ваш бизнес, делать то, что просто и разумно, и не беспокоиться об этом.


5

Последние два дня я экспериментировал с расширенной версией Dotfuscator Community Edition (бесплатная загрузка после регистрации базового CE, поставляемого в комплекте с Visual Studio).

Я думаю, что причина, по которой все больше людей не используют обфускацию в качестве варианта по умолчанию, заключается в том, что это серьезная проблема по сравнению с риском. В небольших тестовых проектах я мог запутать запутанный код, приложив немало усилий. Развертывание простого проекта через ClickOnce было хлопотным, но достижимым после ручной подписи манифестов с помощью mage. Единственная проблема заключалась в том, что при ошибке трассировка стека возвращалась запутанной, а в CE не было упакованного деобфускатора или осветлителя.

Я пытался запутать реальный проект, основанный на VSTO в Excel, с интеграцией Virtual Earth, множеством вызовов веб-сервисов, контейнером IOC и множеством размышлений. Это было невозможно

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


5

Crypto Obfuscator решить все ваши проблемы и сценарии. Это :

  1. Автоматически исключает типы / элементы из запутывания на основе правил. Сериализованные типы / поля являются одним из них.
  2. Его можно интегрировать в процесс сборки с помощью MSBUild.
  3. Поддерживает проекты ASP.Net.

3
fyi @logicnp написал Crypto.
CAD Bloke

Крипто больше не поддерживается.
Карл

Я пробовал несколько, «Крипто» показалось очень агрессивным и полезным, но при запуске замаскированной DLL в De4dot я получил оригинальный код ... Извините, что испортил вечеринку ....
Дейв Гэхан

4

Недавно я попытался передать вывод одного бесплатного обфускатора в другой бесплатный обфускатор, а именно Dotfuscator CE и новый обфускатор Babel на CodePlex. Подробнее в моем блоге .

Что касается сериализации, я переместил этот код в другую DLL и включил его в проект. Я пришел к выводу, что там не было никаких секретов, которых нет в XML, так что он не нуждался в запутывании. Если в этих классах есть какой-либо серьезный код, его следует использовать с помощью частичных классов в основной сборке.


-1, потому что "ты, черт возьми, я слышал, что ты как обфускатор, поэтому я запустил обфускатор на выходе обфускатора ... хочешь узнать больше? Дай мне страницы". Но я считаю второй абзац очень хорошим предложением.
Анев

3

Вы должны использовать все, что дешевле и лучше всего известно для вашей платформы, и называть это днем. Запутывание языков высокого уровня - сложная проблема, потому что потоки кода операции VM не страдают от двух самых больших проблем, которые делают собственные потоки кода операции: идентификация функции / метода и псевдоним регистра.

Что вы должны знать о реверсировании байт-кода, так это о том, что для тестировщиков безопасности уже является обычной практикой просмотр прямого кода X86 и поиск в нем уязвимостей. В сыром X86 вы не обязательно можете даже найти допустимые функции, не говоря уже о том, чтобы отслеживать локальную переменную во время вызова функции. Практически ни при каких условиях нативные реверсоры кода не имеют доступа к именам функций и переменных - если только они не проверяют код Microsoft, для которого MSFT услужливо предоставляет эту информацию общественности.

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



3

Вы можете использовать «Dotfuscator Community Edition» - он поставляется по умолчанию в Visual Studio 2008 Professional. Вы можете прочитать об этом по адресу:

http://msdn.microsoft.com/en-us/library/ms227240%28VS.80%29.aspx
http://www.preemptive.com/dotfuscator.html

«Профессиональная» версия продукта стоит денег, но лучше.

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


+1 за это. Я испробовал практически все бесплатные .NET-обфускаторы, и Dotfuscator был единственным, который фактически запутывал значительную часть MSIL в моих приложениях ASP.NET.
2010 года

@Saille, ты использовал для этого бесплатный Dotfuscator - Community Edition? Я только что поговорил о продажах, и они говорят, что про издание стоит 2000 евро. :(
Houman

Дотфускатор ничего не стоит.
user626528

3

Избегайте реактора. Это совершенно бесполезно (и да, я заплатил за лицензию). Xenocode был лучшим, с которым я столкнулся и купил лицензию тоже. Поддержка была очень хорошей, но мне она не нужна, так как она работает. Я проверил каждый обфускатор, который смог найти, и пришел к выводу, что ксенокод был самым надежным и выполнил свою работу наилучшим образом (также была возможность отправить процесс .NET exe на исходный exe, который я больше нигде не видел).

Существует два основных различия между реактором и ксенокодом. Во-первых, Xenocode действительно работает. Во-вторых, скорость выполнения ваших сборок ничем не отличается. С реактором это было примерно в 6 миллионов раз медленнее. У меня также сложилось впечатление, что реактор был одним человеком.


.NET Reactor имеет много вариантов. Некоторые из них включают защиту во время выполнения и немного замедляют работу приложения, но это цена дополнительной безопасности, которую вы получаете. Однако я серьезно сомневаюсь, будет ли какое-либо замедление, если вы просто будете использовать обфускацию .NET Reactor, без каких-либо других опций
avitenberg

3

Я обнаружил, что Agile.Net обеспечивает довольно хорошую защиту для вашей сборки .Net, потому что она предлагает не только запутывание, но и шифрование. Загрузите бесплатный след.
http://secureteam.net/NET-Code-Protection.aspx http://secureteam.net/downloads.aspx


3
Eazfuscator сказал, почему нет подписи MSIL: см. Gapotchenko.com/eazfuscator.net/kb/100028
QMaster

2

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

Нашим выбором был Xenocode, и если бы я сегодня сделал этот выбор, я бы предпочел не запутывать код или использовать Dotfuscator.



1

Мы используем SmartAssembly в нашем клиенте Windows. Работает просто отлично.

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



1

бесплатный способ - использовать dotfuscator из Visual Studio, в противном случае вам придется пойти и купить обфускатор, такой как Postbuild ( http://www.xenocode.com/Landing/Obfuscation.aspx ).


я не уверен, что понимаю здесь отрицательный голос, почему бы не дать объяснение?
Расс Брэдберри

1

Мне пришлось использовать защиту от запутывания / ресурсов в моем последнем rpoject, и я обнаружил, что Crypto Obfuscator - хороший и простой в использовании инструмент. Проблема сериализации - только вопрос настроек в этом инструменте.


@logicnp, это ваш второй пост в этой теме, посвященный этому продукту. Пожалуйста, сообщите, есть ли у вас отношения с разработчиком этого продукта.
H2ONaCl

Извините, но de4dot может это отменить. Я бы порекомендовал использовать ConfuserEx .
новичок

1

Есть хорошая версия с открытым исходным кодом под названием Obfuscar. Кажется, работает нормально. Типы, свойства, поля, методы могут быть исключены. Оригинал здесь: https://code.google.com/p/obfuscar/ , но, похоже, он больше не обновляется.


Я посмотрел на это сегодня - обратите внимание на дату моего комментария! - и это немного грязно, чтобы начать. Я также потерял большую часть часа, пытаясь заставить его заново подписать сборку, используя файл .pfx. Это бросило неразборчивую, недокументированную ошибку; Кажется, вы можете только подписать, используя .snk.
SteveCinq

0

Возможно, вы также захотите взглянуть на новые технологии защиты кода, такие как Metaforic и ViLabs, и новые технологии защиты программного обеспечения от копирования, такие как ByteShield . Раскрытие информации: я работаю на ByteShield.


0

Я также использую smartassembly. Однако я не знаю, как это работает для веб-приложения. Однако я хотел бы отметить, что если ваше приложение использует условно-бесплатную защиту типов, убедитесь, что оно не проверяет лицензию с логическим возвратом. слишком легко взломать байт. http://blogs.compdj.com/post/Binary-hack-a-NET-executable.aspx


0

SmartAssembly отлично, меня использовали в большинстве моих проектов


-1

Я попробовал демо-версию Eziriz .... Мне понравилось. Но никогда не приносил программное обеспечение.


как это может быть ответом вики от сообщества?
ΦXocę 웃 Пепеупа ツ

-1

Запутывание не настоящая защита.

Если у вас есть файл .NET Exe, то есть FAR лучшее решение.

Я использую Themida и могу сказать, что это работает очень хорошо.

Единственным недостатком Themida является то, что он не может защитить .NET Dlls. (Он также защищает код C ++ в Exe и DLL)

Themida это намного дешевле , чем здесь упомянутых обфускаторы и является лучшим в борьбе с пиратством защиты от на рынке. Он создает виртуальную машину, в которой выполняются критические части вашего кода, и запускает несколько потоков, которые обнаруживают манипуляции или точки останова, установленные взломщиком. Он преобразует .NET Exe в нечто, что Reflector даже не распознает как сборку .NET.

Пожалуйста, прочитайте подробное описание на их сайте: http://www.oreans.com/themida_features.php


-2

Я попробовал продукт под названием Rummage, и он хорошо справляется с задачей, предоставляя вам некоторый контроль ... Хотя Eziriz не хватает многих вещей, которые предлагает Eziriz, но цена на Rummage слишком высока ...

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.