Давно думал на эту тему. Теоретически я знаю как это сделать. То есть систему защиты шарповских программ. В последнем проекте я с дальним прицелом часть кода писал с учетом возможности встраивания защиты. Ну понятно, что решение не чисто шарповское, решение с нативным кодом. На архитектуру легло нормально, есть даже определенные архитектурные бенефиты, понравилось. Тонкие моменты проявились, но не страшно. Сам я конечно не потяну. Кто-нибудь здесь этим занимается?
Здравствуйте, grosborn, Вы писали:
G>Давно думал на эту тему. Теоретически я знаю как это сделать. То есть систему защиты шарповских программ. В последнем проекте я с дальним прицелом часть кода писал с учетом возможности встраивания защиты. Ну понятно, что решение не чисто шарповское, решение с нативным кодом. На архитектуру легло нормально, есть даже определенные архитектурные бенефиты, понравилось. Тонкие моменты проявились, но не страшно. Сам я конечно не потяну. Кто-нибудь здесь этим занимается?
G>>Давно думал на эту тему. Теоретически я знаю как это сделать. То есть систему защиты шарповских программ. В последнем проекте я с дальним прицелом часть кода писал с учетом возможности встраивания защиты. Ну понятно, что решение не чисто шарповское, решение с нативным кодом. На архитектуру легло нормально, есть даже определенные архитектурные бенефиты, понравилось. Тонкие моменты проявились, но не страшно. Сам я конечно не потяну. Кто-нибудь здесь этим занимается?
V>Такие тулзы имеются. V>Вот, например, достаточно зрелая система .NET защиты
V>Или интересует самому смастерить?
Ну вот смотри, они предлагают две тулзы, одну для защиты, другую для взлома этой защиты Ну смешно же.
Обфускация конечно затрудняет понимание кода. Одну задачу решает — твой продукт склонировать будет труднее. А вот против лома это не решение.
Мое решение больше для защиты приложения от взлома, хака, кряка.
Здравствуйте, grosborn, Вы писали:
G>>>Давно думал на эту тему. Теоретически я знаю как это сделать. То есть систему защиты шарповских программ. В последнем проекте я с дальним прицелом часть кода писал с учетом возможности V>>Такие тулзы имеются. V>>Вот, например, достаточно зрелая система .NET защиты
G>Ну вот смотри, они предлагают две тулзы, одну для защиты, другую для взлома этой защиты Ну смешно же. G>Обфускация конечно затрудняет понимание кода. Одну задачу решает — твой продукт склонировать будет труднее. А вот против лома это не решение. G>Мое решение больше для защиты приложения от взлома, хака, кряка.
Ну, насколько я понимаю, защитить шарповский код вообще крайне сложно.
Если что-то и можно сделать, то с применением сетевых компонент защиты, когда часть системы
расположена на сервере и код ее недоступен.
Но сразу оговорюсь — я не профи в этом вопросе. Просто с с системой 9rays немного знаком.
Если по-делу, то китайец там вполне вменяемый, саппортит оперативно.
По технологиям защиты, стабильности и скорости работы и отсутствию в свободном доступе средств борьбы с защитой вроде бы на высоте.
G>Ну вот смотри, они предлагают две тулзы, одну для защиты, другую для взлома этой защиты Ну смешно же.
Ну во-первых не для защиты, а для декомпиляции. Хорошо защищенное приложение декомпилировать-то можно все равно, только код будет нерабочий. То есть например есть IL дизассемблер (ILDASM) — входит в поставку .Net Framework — вот он ваше приложение разберет до байтика, вполне читабельный код, и собрать его можно линкером. Да, тотальной защиты нет, есть комплекс мер — например защита от ILDASM, защита от популярного декомплятора reflector, шифрование строк, и т.д Кроме защиты идет комплекс мер по оптимизации кода — удаление неиспользуемого кода.
То есть обфускаторы "выросли" из понятия "обфускация"(замена имен членов сборки на короткие и бессмысленные) и доросли до понятия "защита". Например упоминаемый тут Spices.Net Obfuscator единственный кто предлагает защиту от подделки (Tamper Defense) — а это способ №1 (ILDASM-ILASM roundtrip) для взлома, когда приложение дизассемблируется в il-код, снимается защита и лицензирование и код обратно линкуется ILASMом — стандартные утилиты от .Net Framework. Если сборка подписана — подписывают своим ключом и порядок. Никакой декомпиляции не нужно. Ну вот Spices.Net Obfuscator ежинственный кто предлагает реальную защиту от этого способа(причем на технологию TamperProof получен патент).
G>Обфускация конечно затрудняет понимание кода. Одну задачу решает — твой продукт склонировать будет труднее. А вот против лома это не решение. G>Мое решение больше для защиты приложения от взлома, хака, кряка.
Для защиты .net приложение есть два класса утилит — это обфускаторы, которые работают с il-кодом и метаданными, и протекторы — обычно "заворачивающие" приложения в свою оболочку, то есть в итоге получается не .net а native processor code app, а при запуске, приложение уже инициализирует .net сборку. Но у протекторов кажущаяся "защита" на самом дле куда проще ломаемая — приложение должно запомнить на диске защищаемую сборку, а потом ее запустить, вот тут его и "ловят". Поэтому часто разработчики протекторов предлагают еще и обфускацию. К тому же у таким образом защищенных приложений есть куча недостатков при работе в средах 32-64бита, разныими политиками безопасности, антивирусы их опознают как malware ит.д А если брать широко весь спектр .net приложений — от winforms к asp.net и к silverlight приложениям, то протекторы тут бессильны(это при определенных оговорках подходит только для winforms приложений, и только приложений, т.к для библиотеки классов, компонент протектор уже не подходит).
собственно в wiki лежит сравнительная табличка, разве что и там идет "война правок": http://en.wikipedia.org/wiki/User:Scatophaga/Comparison_of_.NET_obfuscators
вот есть и на Хабре обзор: http://habrahabr.ru/post/97062/
Во всяком случае эти обзоры дадут понятие о возможностях защиты.
Помнится, что на rsdn занимались своим обфускатором, а теперь и Гугл свой open-source обфускатор (простенький конечно) выложил.
Да в курсе как бы. Мое решение не пересекается с перечисленными.
Spices я не считаю чем-то серьезным. Когда тестировал разные обфускаторы, он что-то мне совсем ничего не смог обфусцировать и в итоге сборка падала. Но зато везде напихал своих рекламных окошек. Ага, выскакивает рекламное окошко, потом приложение падает. А внутри код необфусцирован нигде. И как они себе представляют я это буду покупать что ли?
G>Да в курсе как бы. Мое решение не пересекается с перечисленными.
G>Spices я не считаю чем-то серьезным. Когда тестировал разные обфускаторы, он что-то мне совсем ничего не смог обфусцировать и в итоге сборка падала. Но зато везде напихал своих рекламных окошек. Ага, выскакивает рекламное окошко, потом приложение падает. А внутри код необфусцирован нигде. И как они себе представляют я это буду покупать что ли?
Видимо брали с торрента, старенькую вскрытую, конечно, без лицензии она будет закрываться. Evaluation имеет полный функционал, и разве что маркирует сборку специальной watermark и атрибутом, что "защищено Spices.Obfuscator Evaluation и не для коммерческого использования". То есть некоммерческие проекты можно защищать Evaluation версией, а тем уж более что для СНГ существует постоянная 50% скидка, к тому же подписка продляется, если пользователь обнаружил серьезный баг, короче с СНГ 9rays работает на сильно льготных условиях и сотрудничает и консультирует, особенно в плане рекомендаций для создания эффективной защиты. К слову, тут упоминался китайский обфускатор — а суть тут такова, что все обфускаторы имеют в общем-то базовый функционал (саму обфускацию), а дальше уже экстра-вещи, типа инкрементальной обфускации, реализации шифрования строк, антидекомпайлинга, tamper defense, решения проблем диагностики(stack trace будет неисследуемый, поэтому нужна и его деобфускация), и обфускации кода. Вот тут весь изюм. Для простой обфускации достаточны и freeware типа гугловского или идущего с VS дотфускатора. Проблемы защиты они не решают, но решают проблему усложнения исследования и декомпиляции кода.
Здравствуйте, gods_dog, Вы писали:
G>>Да в курсе как бы. Мое решение не пересекается с перечисленными.
G>>Spices я не считаю чем-то серьезным. Когда тестировал разные обфускаторы, он что-то мне совсем ничего не смог обфусцировать и в итоге сборка падала. Но зато везде напихал своих рекламных окошек. Ага, выскакивает рекламное окошко, потом приложение падает. А внутри код необфусцирован нигде. И как они себе представляют я это буду покупать что ли?
_>Видимо брали с торрента, старенькую вскрытую, конечно, без лицензии она будет закрываться.
Зачем ее качать с торрента, если триал есть?
> Evaluation имеет полный функционал, и разве что маркирует сборку специальной watermark и атрибутом, что "защищено Spices.Obfuscator Evaluation и не для коммерческого использования". То есть некоммерческие проекты можно защищать Evaluation версией, а тем уж более что для СНГ существует постоянная 50% скидка, к тому же подписка продляется, если пользователь обнаружил серьезный баг, короче с СНГ 9rays работает на сильно льготных условиях и сотрудничает и консультирует, особенно в плане рекомендаций для создания эффективной защиты. К слову, тут упоминался китайский обфускатор — а суть тут такова, что все обфускаторы имеют в общем-то базовый функционал (саму обфускацию), а дальше уже экстра-вещи, типа инкрементальной обфускации, реализации шифрования строк, антидекомпайлинга, tamper defense, решения проблем диагностики(stack trace будет неисследуемый, поэтому нужна и его деобфускация), и обфускации кода. Вот тут весь изюм. Для простой обфускации достаточны и freeware типа гугловского или идущего с VS дотфускатора. Проблемы защиты они не решают, но решают проблему усложнения исследования и декомпиляции кода.
Вот я даже читать не стал, ездить по ушам это конечно талант.
Здравствуйте, grosborn, Вы писали:
G>Да в курсе как бы. Мое решение не пересекается с перечисленными.
G>Spices я не считаю чем-то серьезным. Когда тестировал разные обфускаторы, он что-то мне совсем ничего не смог обфусцировать и в итоге сборка падала. Но зато везде напихал своих рекламных окошек. Ага, выскакивает рекламное окошко, потом приложение падает. А внутри код необфусцирован нигде. И как они себе представляют я это буду покупать что ли?
Справедливости ради скажу, что использую этот spices для защиты одного из продуктов, и у меня все работает гладко. Проект — WinForms приложение на .NET 2.0, обфускатор покупал несколько лет назад (если он с тех пор испортился, то хз). Шифрует строки, переименовывает все подряд во всякие нечитаемые символы, логику особо не меняет, насколько я вижу.