Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Защита исходного кода .NET приложений |
Автор: IZ@TOP 25.9.2003, 16:54 |
САБЖ. Собственно я слышал что есть какие то утилиты которые защищают IL от чужих глаз, но не видел ... кто чего знает по этому поводу ? Пожелания, предложения ? Мне кажется эта тема актуальной, и относится не только к клиентским приложениям, но и WEB Server - Side ... |
Автор: Case 25.9.2003, 17:10 |
Могу только сказать, что с точки зрения таких приложений как TestComplete и им подобных (имеются в виду программы для тестирования) приложение на .NET являются open project (то есть можно получить доступ ко всем методам и интерфейсам, не говоря уж о контролах). _______________________ http://tester.com.ua - Сервер тестировщиков. |
Автор: IZ@TOP 25.9.2003, 17:14 | ||
Во, во ! Именно об этом я и говорил ... неужели нет ни чего чем можно от халявщиков защититься ? Взяли ILDasm ... и весь IL у тебя ... Правда еще IL надо изучить ![]() |
Автор: IZ@TOP 26.9.2003, 11:57 |
Значит так, есть шанс что Мелкософтовцы прольют свет на это дело, наше издательство выпустило книгу "Защищенный КОД", сейчас буду смотреть что в ней есть, если чего интересного найду, сообщу. Для тех кто хотел бы купить, сообщаю что, книга появится в продаже в начале ноября. |
Автор: stab 26.9.2003, 17:20 |
"Защищенный КОД" это наверно Safe Code ![]() |
Автор: Chess64 26.9.2003, 18:39 |
Спасибо мастерам, что откликнулись на существующий вопрос. А возник он совершено случайно. Создается проект на C# .NET - программисты довольны и уже готовы его сдать... тут одному из них попадается один из дизасмов для .NET (в данном случае .NET Reflector) и начался геморой. Всевозможные ухищерения спрятать нужную часть кода не удавались. А специальные дотфускаторы стоят от1000 $. Вот поетому я спросил у народа, КАК защитить код .NET. Кстати что за "Защищенный КОД" - о чем ? Возможно куплю. ![]() |
Автор: stab 26.9.2003, 19:23 | ||
скажи, плиз, какие? ни одного не видел. |
Автор: Chess64 27.9.2003, 14:42 |
>> cully к примеру ThInstall его стоимость насколько я знаю составляет лицензия на 1 юзверя = 749 $ лицензия на 2-х юзверей = 1199 $ лицензия на 5 юзверей = 2499 $ В оплату входит год суппорта и апргрейда. Пойдет пример. Самое прикольное что буквально рядом продается антифускатор (правда цена вроде повыше) Есть еще DotFuscator Standart and Professional (395 $ и 1495 $ соответственно). |
Автор: IZ@TOP 8.10.2003, 17:29 |
Короче, книга как оказалось офигенная, просто обо всем (Это я про "Защищенный код") ... На ней так же присутствует такая реккомендация: "Обязательное чтение для сотрудников Microsoft" И подпись - Билл Гейтс ![]() Так что всем советую, а как только появится заглавие в PDF - я сюда ссылку кину. Но это будет примерно в ноябре, собственно тогда же ее можно будет приобрести. |
Автор: NetSharp 2.1.2004, 06:19 |
Есть хороший нетфускатор от Remotesoft (http://www.remotesoft.com/) и совершенно бесплатный! Что качается антифускаторов, ИМХО, такого невозможно сделать. Буду очень признателен, если Вы, уважаемый Chess64, расскажите мне принцип его работы. |
Автор: IZ@TOP 4.1.2004, 06:14 | ||
NetSharp, интересно ...
|
Автор: NetSharp 4.1.2004, 08:54 |
На 100% ни что не может защитить. Но всё же защищает он хорошо. |
Автор: IZ@TOP 6.1.2004, 14:09 |
NetSharp, а что именно делает анитфуксатор? Где об этом можно почитать поподробнее? |
Автор: NetSharp 6.1.2004, 14:47 |
Не знаю. На мой взгляд антифускаторов вообще неаозможно сделать. Ведь принцип работы обычных обфускаторов заключается в том, что он меняет названия всех методов, переменных, пространств имен на другие произвольные имена (например на a, b, c, d,... или 1a, 2b, 3c,... или же на FDRTBHH, KIUYTDCF и т.д.). Следовательно, как программа сможет поменять эти имена на первоночальные, если первичные имена нигде не сохранились? |
Автор: IZ@TOP 9.1.2004, 13:47 |
NetSharp, бред какой то ... |
Автор: NetSharp 9.1.2004, 16:30 |
Почему бред? Все понятно.. Кстати я нашел еще один дотфускатор в перенговой сети Torrent. Бесплатный и с исходниками. Весит он 200 с небольшим метров. Когда скачаю - скажу что там. |
Автор: IZ@TOP 9.1.2004, 17:40 |
NetSharp, ок. На счет "бред", я просто этих технологий не знаю, по этому не буду корчить умника, лучше скажи где почитать об этом можно ![]() |
Автор: NetSharp 9.1.2004, 23:26 |
Iz@top, важно только понимать, что в .NET сборке PE структура не в native коде, а в IL (managed) коде. И только при выполнении IL код компилируется уже в машинный. Такая структура PE очень удобна, но IL выше assembler кода, что делает дизассемблирование очень простым. Статьи про обфускацию можно почитать здесь: - http://www.aspnetmania.com/ViewArticle.aspx?article_id=33&tabid=3&d_no=30162 - http://www.aspnetmania.com/ViewArticle.aspx?article_id=36&tabid=3&d_no=30339 - http://www.aspnetmania.com/ViewArticle.aspx?article_id=37&tabid=3&d_no=32087 - http://www.vbnet.ru/article/showarticle.asp?id=125 |
Автор: NetSharp 10.1.2004, 21:37 |
Кстати, обфускатор от Remotesoft можете скачать http://www.vbnet.ru/alex/Remotesoft_DOTNET_Obfuscator_Evaluation.msi. |
Автор: IZ@TOP 13.1.2004, 13:28 |
NetSharp, спасибо за информацию. |
Автор: Paradox 27.2.2004, 09:43 |
На сколько мне известно есть ILDASM именно для дизассемблирования .нет программ, и поставляется он с .нет фреймворк помоему, причем он разбирает код вплось до такого какие классы определены в программе, методы доступа к ним, сингнатуры методов, и так далее Кстати Iz@top если у тебя есть доступ к книжкам прочти 1-ю главу книги "Программирование для .NET" Джеф Просиз - помоему, там про все это написано подробнее MicroSoft ксати советует защищать исходный код с помощью утилит третьих фирм |
Автор: NetSharp 12.3.2004, 00:09 | ||
Верно. Но это возможности только дизассемблера. Также в природе существуют декомпиляторы, которые managed код позволяют перевести в практически идентичный высокоуровневый код. |
Автор: IZ@TOP 27.3.2004, 18:59 | ||
А по моему нет ![]() ![]() |
Автор: Sniper 14.4.2004, 18:59 |
А если посмотреть на всю эту .Net с другой стороны то получается что Микрософт сможет слёгкостью использовать разрабротки всё техже третьих фирм для своих целей! Ведь ЗАЩИТУ КОДА они так и не предоставили! |
Автор: stab 20.4.2004, 21:02 |
[offtop] Sniper, скорее некие четвертые лица будут использовать наши разработки ![]() [/offtop] а если серьезно, то наша компания именно по этим причинам отказалась от использования .net ![]() |
Автор: stab 30.4.2004, 19:38 |
Люди имеющие опыт применения обфускаторов на практике, пожалуйста, поделитесь впечатлениями. Какие грабли есть, где обфускация применима а где даёт\даст сбой? |
Автор: NetSharp 4.5.2004, 02:50 | ||
Ни в коем случае. У Microsoft совершенно другая политика. Кроме того, Microsoft же выпустила книгу "Защищенный код" (Writing Secure Code). |
Автор: IZ@TOP 12.5.2004, 20:18 | ||
А наше издательство перевело и с успехом продает эту книгу! Среди специалистов считается очень хорошей литературой. На обложке подпись Билла - "Обязательна для чтения сотрудникам Microsoft" ![]() |
Автор: Finkel 7.6.2004, 01:08 |
и когда же она появится в продаже? |
Автор: IZ@TOP 8.6.2004, 10:46 |
Finkel Вообщем-то эта книга продается уже с ноября 2003 года. Смотри в магазинах своего города. А так же www.ozon.ru & www.bolero.ru. |
Автор: zeus 11.6.2004, 23:07 |
я тут случайно в темку заглянул.... дык dotfuscator в MS VC 2003 входит вроде ???? |
Автор: arilou 15.7.2004, 13:34 |
Микрософт теперь поддерживает Open Source ![]() |
Автор: Гость_Victor 20.7.2004, 10:21 |
а есть холявная версия?(e-book) |
Автор: December 23.8.2004, 22:59 | ||
Входит, но есть на него многочисленные жалобы. |
Автор: NiJazz 3.2.2005, 13:43 |
Можно подписывать бинарники. Матушка-криптография никогда не устареет. ![]() |
Автор: jfx 20.4.2005, 12:28 | ||
И что это даст? |
Автор: mike_ 21.4.2005, 09:53 | ||||
Это защитит от сборку от возможности исправлять код в ней. В большинстве случаев этого достаточно. |
Автор: jfx 21.4.2005, 10:28 | ||
"Это" не защитит сборку. Есть как минимум три способа обойти проверку StrongName:
|
Автор: mike_ 21.4.2005, 15:00 | ||
No comments... я и не говорил о 100% защите. Потому как предложенный тобой способ обхода знают многие, но не все. И плюс ко всему, этот вариант взлома тоже не 100%. |
Автор: jfx 21.4.2005, 16:24 | ||
да ну... |
Автор: zendao 5.6.2005, 19:47 |
Еще есть XenoCode http://www.xenocode.com/setup.msi Как пример, листинг исходника и декомпилированного кода: http://www.xenocode.com/Articles-Sample.aspx |
Автор: Ch0bits 5.6.2005, 22:52 |
Ужасьнах... чего он с кодом сделал! ![]() Ну ничего... и его поломают. ![]() |
Автор: nikf 8.6.2005, 17:23 |
смех и грех.. если прога ченить стоит, то $1000 на защиту это копейки, а иначе болтовня одна и защищать нечего... |
Автор: sammix 2.10.2005, 11:14 |
Всё это похоже на триаду: - новый розвод на деньги от Мелкософт собственной персоной - возможность мелкософтовцам цапать проекты третьих сторон - ну или новая работа для создателей протекторов и обфускаторов. |
Автор: Budda 23.10.2005, 05:24 |
Погодите, люди. Если я не ошибаюсь, то ИЛДасм.єхє сможет показать код только public классов. А всё, что нужно спрятать, можно прятать в private... Или не так? |
Автор: mr.DUDA 23.10.2005, 12:57 | ||
не так ![]() |
Автор: Budda 23.10.2005, 19:49 |
mr.DUDAпроверил, точно private - не прячет код... хм, странно, а зачем сие сделано? В чём смысл? Я ещё понимаю, открывать код public-методов, или protected, но вот private... ? |
Автор: Mad 24.10.2005, 13:03 |
По большому счету, обыный бинарник, сделанный любым компилятором, можно перевести в исфодный код (в автомате на Asm ![]() ![]() так что прятать код както специально, или коробить его, я особого смысла не вижу (тем более платить за енто огромные деньги). Исли комуто понравиться какаято часть твоего кода (имеется в виду, какаято функция, или метод ее реализации), то всеравно он сможет ее вытянуть ![]() |
Автор: Exception 24.10.2005, 14:47 |
private нужен не для сокрытия кода, а для сокрытия реализации. а то зачем нужен ООП? ведь в этом и смысл - инкапсуляция.. |
Автор: Budda 24.10.2005, 14:53 |
Run-time error, да, понимаю. А то что код можно легко смотреть, то это и есть косвенное следствие наличия манифестов в сборках, верно? Если есть возможность, запусти, плиз, аську. Я там к тебе постучался... хочу спросить кое-чего... |
Автор: Гость_Master 12.12.2005, 11:08 |
Люди, нет лучшей обфускации, чем ручная обфускация критических участков кода. .NET позволяет динамически генерировать код, загружать сборки непосредственно с памяти, использовать вместо стандартных вызовов функции CreateInstance, InvokeMethod и т.д. и т.п. |
Автор: Medved 20.12.2005, 20:50 |
http://www.dotsite.ru/Publications/Publication109.aspx http://www.dotsite.ru/Publications/Publication113.aspx |
Автор: VisualProgrammerNET 21.12.2005, 13:38 | ||
Это как? ![]() |
Автор: mr.DUDA 21.12.2005, 16:05 | ||
неймспейс System.Reflection.Emit а также Microsoft.CSharp |
Автор: arilou 21.12.2005, 17:14 | ||
А также System.CodeDom |
Автор: Lord Dagger 21.12.2005, 21:30 |
Теперь есть возможность использования Unicode-символов в именах переменных, методов и функций. Это может затруднить задачу деобфускации сборок. |
Автор: mr.DUDA 21.12.2005, 21:38 | ||
Поправьте меня, если я не прав: разве до сих пор нельзя было использовать юникод в вышеперечисленных ситуациях? Например, я могу создать класс с именем Класс1 в студии 2003. ![]() Добавлено @ 21:39 З.Ы. а чем метод отличается от функции ? ![]() |
Автор: Exception 21.12.2005, 21:43 | ||
Угу.
![]() |
Автор: Lord Dagger 21.12.2005, 21:50 |
mr.DUDA Конечно, можно было;) Просто именно сейчас на эту возможность обратила внимание общественность ![]() Да и я честно говоря до появления VS 2005 этим не пользовался. Процедуры и функции связываются с классом, они обеспечивают функциональность данных класса и называются методами класса. Главную роль в программной системе играют данные, а функции лишь служат данным. Вот так;) |
Автор: Danilo 1.2.2006, 23:32 |
У нас в конторе довольно долго обсуждались варианты защиты программного кода и в итоге был написан фрэймворк делающий примерно следующее: 1. После компиляции все модули системы пропускаются через encryptor, который читает сборки, получает тела функций, криптует их одним из алгоритмов шифрования и пишет обратно в сборку. 2. При запуске программы используем .NET Profiling Api позволяющий перед вызовом функции JIT компайлером получить тело метода, дешифровать его и "подсунуть" оригинальное тело метода. Таким образом прочтение кода становится весьма сложной задачей т.к. дешифрованные данные доступны только в runtime, хотя имена классов и функций остаются видны. Предвосхищая вопросы перфоманса могу сказать что он сильно зависит от алгоритмов шифрования, но практика показала что использование симметричных алгоритмов даёт приемлимый (для нашей системы) результат. |
Автор: jfx 6.2.2006, 14:35 |
Хм, интересный способ, похоже на загрузчики Java. В Java это реализуется почти стандартно, а вот в .NET как? Исли можно пример или ссылки по теме. Спасибо. |
Автор: Danilo 12.2.2006, 23:36 | ||
Почитать можно например http://www.msdn.net/msdnmag/issues/03/09/NETProfilingAPI/. |
Автор: ivashkanet 19.6.2006, 10:11 |
Поднимаю тему. Вычитал, что все данные, нужные для дезассемблирования берутся из метаданных. Вопрос: возможно ли как-нибудь корректно удалить часть метаданных (я понимаю, что потом нашу сборку нельзя будет корректно подключить к другой сборке). Вопрос чисто теоретический. Просто пришел в голову ![]() |
Автор: mr.DUDA 19.6.2006, 20:19 |
Вряд ли CLR позволит удалить из сборки таблицу метаданных ![]() |
Автор: ivashkanet 20.6.2006, 07:48 |
Это был чисто теоретический вопрос ![]() |
Автор: mr.DUDA 20.6.2006, 11:35 |
это был чисто теоретический ответ ![]() |
Автор: sammix 20.6.2006, 21:15 |
Кто знает может это всё к лучшему... сорсы дороже стоят, но в таком случае всем придется делать open-source проекты. |
Автор: ivashkanet 30.8.2006, 12:20 | ||
Поднимаю тему опять
jfx, ты извини, но ты совсем не в курсе вопроса ![]() Сборку защищают для того, чтобы ее нельзя было подменить на другую ![]() Проверкой ключей и строгих имен заниматся прога (сборка) использующая защищенную сборку. Если мы удалим publicKey из сборки, то прога будет ругаться на попытку подсунуть ей другую сборку вместо необходимой (защищенной ключем). P.S. Повторяю еще раз: StrongName сборки нужно для защиты ее от подмены ![]() Если сделать хоть какое изменение в сборке мы теряем ее Строгое Имя. После этого все программы, которые используют защищенную сборку будут ругаться на измененную. P.P.S. Механизм подписывания сборок используется так же механизме предоставления прав сборке. Например можно запретить неподписанным (ключем которомы мы доверям) сборкам доступ к реестру, диску С: (можно вообще много чего запретить). После этого если злоумышленник изменит код сборки, то он потеряет ее подпись, а следовательно и возможность навредить ![]() |
Автор: Rapalex 31.8.2006, 11:25 |
Почитал я 3-х летнюю дискусию, и возник вопрос рас уж так исторически вышло что всё можно дизасемблировать, а .нет можно ещё и декомпелировать, тогда КАК ЖЕ НАМ ПРОГРАМЕРАМ ПРИВЯЗЫВАТЬ НАШ ПРОДУКТ К ЖЕЛЕЗУ? Ведь вся наша проверка видна декомпилятором и легко можно написать кейген используя наш код!!! Я никогда даже не пробывал ломать класические екзешники но знаю что есть всякие отладчики для экзешников, но есть и те программы которые не дают им работать. А что с етим в мире .нет? Не забуддте про вопрос который набран ЗАГЛАВНЫМИ БУКВАМИ. |
Автор: mr.DUDA 2.9.2006, 11:09 |
Rapalex, всё решается на самом деле очень просто. Есть такое слово: обфускация. И никакая декомпиляция не поможет ![]() |
Автор: $tatic 3.9.2006, 15:33 | ||
Я когда-то устанавливал 9-Rays Obfuscator. Короче там была какая-то примочка, которая помимо обфускации что-то еще делала с бинарником, в результате чего сборку вообще нельзя было загрузить в любой декомпилятор. Они просто выпадают с ошибкой. Не только ILDasm, но и Reflector. Кстати сам 9-Rays Obfuscator именно этой фичей и защищен. ![]()
А если хакер именно эту прогу и поломает? ![]() Может скомпилированную (и обфусцированную) прогу на .NET сжать каким-нибудь упаковщиком и обработать DotFix FakeSigner? Да, и еще. Ведь при запуске проги на .NET управление получает вначале загрузчик, который уже потом запускает mscoree.dll. Можно ли сделать свой загрузчик, который вначале расшифрует код IL, а уже потом отправит его на выполнение? Кстати если бы обфускаторы давали классам имена в юникоде из символов какой-нибудь "левой" кодовой страницы ИМХО было бы весело ![]() |
Автор: mr.DUDA 3.9.2006, 17:15 | ||
Они и так достаточно "левые", поди разбери что имеется ввиду в коде типа "a._b.c()._d(_e.a);" ![]() |
Автор: ivashkanet 3.9.2006, 18:54 |
Теоретически, должно измениться ее строгое имя ![]() |
Автор: $tatic 3.9.2006, 19:12 |
И где это будет проверено? |
Автор: ivashkanet 4.9.2006, 08:48 |
"Quis custodiet ipsos custodes" - Кто будет сторожить сторожей?(лат) Теоретически можно (и нужно) настроить правила безопасности, которые будут запрещать доступ неподписаных (или подписанных неизвестно кем) приложений к критическим ресурсам. Но опять же возникает вопрос, поднятый в начале поста. Где уверенность, что программу безопасности не подменят? Где уверенность, что не подменят сам загрузчик Винды (или другой оси)...? Зато сейчас полностью исключены случаи подмены библиотек (думаю не ошибусь, если скажу, что 70-80% действительно вредоносных вирусов этим промышляют), что уже, ИМХО, проело плешь всему Майкрософту вместе взятому. Не зря же они придумали систему проверки целосности/оригинальности системных библиотек. P.S. $tatic, извини, не врубился (точнее невчитался) в твой вопрос, вот и ответил невпопад ![]() |
Автор: $tatic 4.9.2006, 09:31 |
Ну я предполагал такую ситуацию: в программе есть защита (допустим она шароварная). Код программы находится в дллке (подписанной) и загружается загрузчиком, который проверяет ее подлинность. Если хакер взламывает дллку для сброса защиты, то подпись файла меняется и загрузчик сильно ругается ![]() Аналогичный случай наблюдался при взломе Windows XP SP1 крякером Reset5, когда недобросовестный ![]() Конечно анализ обфусцированной программы выполнить очень сложно. Но хакеру надо найти именно тот участок, который ответственнен за защиту программы. Ему же не надо полный reverse engineering делать. Естетственно эту проверку можно спрятать среди кучи левых методов, но хакер ведь может получить полный исходник в виде проекта для студии (это может плагин FileDisassembler для Reflector), загрузить его в студию и запустить в режиме отладки. Ведь этот метод фактически недоступен при анализе программ в машинном коде. А вот над измененным загрузчиком IL-кода стоит подумать. ЗЫ. Хакеры давно уже научились обходить проверку подлинности библиотек. Читайте Криса Касперски. |
Автор: mr.DUDA 4.9.2006, 11:20 | ||
Нормальный обфускатор не позволит дизассемблировать программу в высокоуровневый язык (будут кидаться ошибки), и всё что останется - декомпилировать и отлаживать IL-код, что практически равносильно анализу программ в машинном коде. Кстати, хороший пример защиты исходного кода - как скрыты исходники самого Reflector-а ![]() |
Автор: Rapalex 4.9.2006, 14:33 |
Скажите кто каким обфускатором пользуется? |
Автор: mr.DUDA 4.9.2006, 15:58 |
Пока серьёзным не приходилось пользоваться, DotFuscator community edition юзал. |
Автор: VisualProgrammerNET 4.9.2006, 16:11 | ||
Чё меня бесит, так это то, что если допустим в программе есть закрытая переменная с паролем, например
то этот пароль можно просто и без проблем выдрать из программы. Кто-нибудь пробовал открывать экзешник или дллку в блокноте? Даже слепой не сможет не заметить среди тучи слов вполне логичные password2server = 1234567890. Мне не понятен принцип работы обфускатора. Что изменится с исполнительными файлами и библиотеками программы? Будет ли виден пресловутый пароль через блокнот? |
Автор: mr.DUDA 5.9.2006, 08:31 |
Никто никогда не хранит такие данные в открытом виде. Чаще используют хеши (для сравнения) либо зашифрованные строки. |
Автор: ivashkanet 5.9.2006, 09:33 |
mr.DUDA, как можно хранить хэш, если базза требует именно пароль, а не его Хэш? Аааа, ключевое слово --- "для сравнения", тогда понятно ![]() Поподробнее. Насколько сильно нужно их шифровать? Какой-нибудь циклический сдвиг (А->Б, ..., Я->А) подойдет? |
Автор: arilou 5.9.2006, 10:42 | ||
некоторые обфускаторы шифруют строки. сорри, конкретных примеров не помню. |
Автор: mr.DUDA 5.9.2006, 10:57 | ||
Чем круче алгоритм шифрования, тем лучше. Ещё лучше - не хранить конфиденциальную информацию в теле программы. |
Автор: ivashkanet 5.9.2006, 11:01 |
mr.DUDA, а хде ![]() Чувствую ![]() ![]() |
Автор: mr.DUDA 5.9.2006, 11:05 |
Скажи мне, ну нафига хранить секретный логин и пароль в проге ? К чему логин ? И пароль ? |
Автор: arilou 5.9.2006, 11:32 |
Вот вам паранодиальный (для большинства задач) сценарий создания системы безопасности ![]() 1) Создается private/public key pair 2) Им подписываются сборки 3) В сборках с помощью System.Security прописывается, чтобы вызывающий код был подписан, и чтоб public key подписи совпадал с public key из п.1 4) Все это обрабатывается обфускатором Для клиент-серверной дополнительно шифруется траффик, например с помощью sink'ов. Для шифрования от сервера к клиенту используется public/private key pair из п.1. Для шифрования от клиента к серверу используется другой, временно создаваемый сервером, key pair. Все это добро работает под MS .NET 2.0. А теперь давайте попробуем этот сценарий хакнуть. |
Автор: Rapalex 4.10.2006, 11:44 |
Я так поразмышлял, и удивился как мы можем спрятать код если потом всёравно джит должен его открыть, если мы его спрячем так чтоб не хакнуть то мы его и не запустим ![]() |
Автор: mr.DUDA 4.10.2006, 17:50 | ||
Мы и не прячем код, мы делаем его ооочень неудобочитаемым, где-то на уровне ассемблера или чуть ниже ![]() |
Автор: andrx 4.10.2006, 19:09 |
А разве плохо защищать код HASP HL ключами ? (это конечно дополнительные финансовые затраты, но все же) |
Автор: st4lk3r0k 31.12.2006, 01:35 |
так... а теперь вопрос: Прочитал я всю это ну уже почти 4ёх летнию дискуссию и так и не понял а зачем платить за обфуксаторы? Варез вам в помощь ![]() и всётаки помойму лучший способ защитить код это изкаверкать его до уровня ассемблера и никому не говорить про своё творение тоесть на флэшку и в ящик ![]() а вообще интересно с начала дискуссии прошло 4 года а что изменилось? естьли какиенить новые способы защиты и какие являются наиболее эффективными на сегодняшний день? |
Автор: mr.DUDA 31.12.2006, 13:43 |
Обфускацию за 4 прошедшие года никто не отменил. Так и защищают. Плюс, вешают тайм-бомбы и всяческие противные мессаджбоксы, чтоб жизнь малиной не казалась ![]() |
Автор: st4lk3r0k 31.12.2006, 14:57 |
mr.DUDA, Пасиб, а можно по конкретней про тайм бомбы? чё эт такое и каким мокаром его можно использовать в защите? ..кста нука брысь отсюда, после завтра ответиш! кто к новому году готовится будет? ![]() З.Ы. я уже ушёл ![]() |
Автор: Partizan 16.8.2007, 09:40 |
ребят ) нужна помощь...мож кто сталкивался: после обработки обфускатором от xenocode прога благополучно отваливается на Assembly.GetTypes() =( З.ы. мож как нить можно получить типы сборки без использования функции GetTypes? |
Автор: Partizan 16.8.2007, 15:17 |
вопрос решён... |
Автор: arilou 16.8.2007, 17:00 |
Как? |
Автор: Partizan 17.8.2007, 09:35 |
arilou, ну в моём конкретном случае помогло отключение обфускации для всех public и protected полей и свойств |
Автор: VisualProgrammerNET 30.9.2007, 10:45 |
Вопрос такой, а есть ли хороший бесплатный обфускатор? Ничего сверхзашифрованного мне не надо, но хотя бы как-то защитить код нужно. |
Автор: Stepan_Lameroff 30.9.2007, 11:36 | ||
Open Source - можно по вкусу напильником ![]() http://www.codeplex.com/SharpObfuscator |
Автор: 4ybaka 23.1.2008, 01:11 |
и снова она жива! ![]() вот прочел весь этот ТРУД и в итоге толком ничего не нашел:( упомянутый SharpObfuscator имеет Alpha версию,что не внушает доверия.а поиск по инету дал только триальные версии. может кто за это время всеже нашел бесплатный,рабочий обфускатор?признаюсь, SharpObfuscator еще не пробовал,но на сайте файлы уже больше чем полгода как не обновлялись... |
Автор: arilou 23.1.2008, 11:45 |
4ybaka, слишком это "золотая" тема, чтобы бесплатно делать. Посмотри на цены обфускаторов... |
Автор: 4ybaka 23.1.2008, 22:04 |
не,ну VS стоит еще больше,однако хорошие аналоги же существуют...конечно может еще просто рано,но это уже другой разговор... |
Автор: kosten_spb 8.5.2008, 22:56 |
Сейчас у большинства пользователей есть достаточно быстрый инет. Почему бы не вынести часть функционала в web-service? Тогда конечному пользователю не будет доступен файл с IL кодом. |
Автор: 4ybaka 8.5.2008, 23:10 |
но это всеже зависит от решаемой задачи...а если необходимо будет все делать в офлайне?что тогда?.. |
Автор: mr.DUDA 8.5.2008, 23:17 |
4ybaka, в офлайне ничего ты не защитишь. Вон зачем Mass Effect и прочая братия взялась за продление подписки через инет? Ага, всё потому же - не защитишь ты комп локально, всё сломают за час/день/неделю. |
Автор: nildar 17.11.2008, 17:40 |
Для защиты можно использовать разные продукты например бесплатный обфускатор NetObf-Protector Что умеет: - Переименование классов, методов, полей в набор бессмысленных символов (не читабельные символы); - Поддержка атрибутов управления обфускацией (System.Reflection.ObfuscationAttribute) - Шифрование строк; - Объединение сборок; - Поддержка подписи сборок с использованием ключей .SNK или .PFX Подробнее: http://netobf.com/ http://netobf.com/netobf-protector Скачать: http://netobf.com/download Или можно использовать более мощьный продукт http://netobf.com/obfuscator |
Автор: nildar 26.12.2008, 20:16 |
бесплатная утилита защиты NetObf-Protector Назначение: защита приложений от взлома (декомпиляция, изучение кода), написанных на C#, VB, ... (.NET) Функциональные возможности: - Символьная обфускация. Переименование классов, методов, полей в набор бессмысленных символов (не читабельные символы); - Поддержка атрибутов управления обфускацией (System.Reflection.ObfuscationAttribute) - Обфускация символьных данных (шифрование строк); - Объединение сборок; - Strong name. Поддержка подписи сборок с использованием ключей .SNK или .PFX - Поддержка .NET Framework: 1.1/2.0/3.0/3.5 Утилита проста в применении. Поддерживает 2-а режима работы - Создание защищенного закрытого проекта. - Создание защищенного открытого проекта (плагины, библиотеки классов для внешнего использования) Подробнее: http://netobf.com/ http://netobf.com/netobf-protector Скачать: http://netobf.com/download |
Автор: Partizan 26.12.2008, 20:41 |
nildar, хватит уже свою навязчивую рекламу везде тут пихать... |
Автор: vikaz 7.9.2009, 22:36 |
Всем добрый день! Я только начинаю изучать .NET, но на втором дне изучения, у меня так же возник вопрос о защите программного кода! Я в основном пишу на с++ под WIN 32 и там для себя я нашел оптимальную защиту + цена: Аппаратный ключ защиты SenseLock + Виртуализация отдальных частей кода! А можно ли данные технологии применить тут? И еще один вопрос! можно ли засунуть главную форму приложения в DLL? Если да, то код в DLL так же будет представлять IL инструкции? |
Автор: Partizan 7.9.2009, 23:05 |
всё будет представлять IL инструкции...стандартный способ защиты - обфускация кода. |
Автор: vikaz 8.9.2009, 06:29 | ||
Это я уже понял из топика! и действительно хорошо защищает? А можешь опубликовать ссылки на бесплатные обфускаторы, которые заслуживают внимания.....? |
Автор: vikaz 8.9.2009, 09:21 |
и как Вам этот подход? http://www.robosoft.info/en/company/downloads/downloadsenselockwrapper |
Автор: PashaPash 8.9.2009, 15:57 |
vikaz, ломается подменой SenselockWrapper.dll |
Автор: hijaq 8.9.2009, 16:36 | ||
Ну, допустим, SenselockWrapper.dll вы подмените, это действительно не сложно. Только каким образом вы будете решать проблему вытаскивания из ключа функции, которую разработчик переместил из своей программы в ключ, где она уже выполняется и, собственно, пределов ключа не покидает? А без этого подмена dll как бы смысла то и не имеет =) |
Автор: vikaz 8.9.2009, 17:26 |
Я то не настаиваю! И из ключа функции не вытаскиваются, наоборот, в ключ перемещаются функции которые нужно спрятать от глаз, данная функция выполняется внутри ключа и возвращает значение.... И еще, для того чтобы подменить dll, нужно знать что в ней, а если перед этим произвисти виртуализацию переменных и некоторых функций? Что усложнит вскрытие, + часть функций находятся в ключе, а оттуда вообще не достать информацию..... получается понять что делает эта библиотека не возможно на 95%..... |
Автор: PashaPash 8.9.2009, 18:50 |
hijaq, vikaz, покупается одна копия мегапрограммы, делается прокси на SenselockWrapper на одну машину с железным ключом. И для подмены не "нужно знать что в ней", и даже вскрывать ее не надо - public-методы в любом случае видны. Топик вообще-то о защите исходного кода .net приложений. В ключ можно засунуть .net код? Что-то сомневаюсь. Защита путем "переписать на C" - это не защита. SenseLock - это круто, но тем не менее - оффтоп ;) |
Автор: vikaz 8.9.2009, 19:24 |
Извините! Всем спасибо за ответы и разъяснения! ![]() |
Автор: maxsus 20.2.2010, 21:21 |
самомодифицируемый код ..... для декомпилятора будет сложен=) Что касаемо вообще защиты это впринципе невозможно ибо строим програму по законам общеизвесным.....а зная законы Да и вообщем то пришли к такой точке программирования что очень мало народу пишет действитетельно чтото новое....ну если тока алгоритмы построения.... незнаю проще свой написать чем раскапывать тысячи строк. .....как видим даже майкрософт с этим несправляется но это немешает им грбсти бабло лопатой.....такчто тут стока нюансов что общий подход для индивидуального неподойдет. |
Автор: Rockie 9.3.2010, 15:40 | ||||
Присоединяюсь! ![]()
Кто-то пробовал? Как впечатления? |
Автор: Voyager 10.2.2012, 10:01 | ||
Попробуйте http://www.vgrsoft.com/ru/products/ilp Описание: ILProtector protects your .NET code against reverse engineering, decompiling and modifying. ILProtector transforms Intermediate Language (MSIL) code into a Virtual Machine ("VM") specific form that is not recognized by disassemblers and decompilers such as IL DASM or .NET Reflector.
|
Автор: mihavxc 13.3.2012, 16:14 |
Если вам нужен именно обфускатор, то ознакомьтесь с обзором на хабре: http://habrahabr.ru/blogs/net/97062/ Но я бы вам рекомендовал подумать о более тотальной защите вашего ПО, то есть не только сделать обсускацию, но и привязать ПО к программным или аппаратным ключам и реализовать борьбу с отладчиками и прочими нехорошими вещами. Советую ознакомиться с комплектом разработчика Sentinel HASP: http://www.aladdin-rd.ru/catalog/hasp/ |
Автор: techPro 23.3.2012, 21:39 |
Уж если кто-то закрыл, то наверняка кто-то и открыть сможет. Вообще говоря, именно благодаря пиратам на Руси виндовс так популярна... |
Автор: Rockie 26.3.2012, 09:43 |
какая прелесть))![]() Добавлено через 40 секунд mihavxc, спасибо за ссылку на обзор! |
Автор: V0fka 26.6.2014, 08:53 |
Посмотрел тему, посмотрел обзор на хабре, на который ссылка выше. Попробовал Eazfuscator.NET 4.3. При попытке ним воспользоваться в визуал студио выдается предупреждение о том, что программа будет работать ДО такого-то числа. Судя по тому, что последнему посту в теме больше 2 лет, возможно многое поменялось и этот обфускатор уже не бесплатный. Так же возможно появились новые инструменты, исчезли старые. Вопрос: посоветуйте какой-то бесплатный обфускатор? Ничего сверхъестественного не надо. Не преследую цели защитить код, преследую цель не показывать его всем подряд ![]() |