Защита .NET приложений: нужен совет
62 повідомлення
#17 років тому
До недавнего времени у меня неплохо получалось удовлетворять все запросы заказчиков, используя C# и Visual Studio - 2005, пока один из них не потребовал защитить свою программу. Вот тут-то все и началось. До сих пор не могу найти оптимального решения - все перепробованные способы или требуют кучу денег или приводят к неработоспособности программы. Может кто-нибудь даст полезный совет в этом вопросе?
62 повідомлення
#17 років тому
От декомпиляции, например, ildasm, то есть скрыть исходный код от просмотра.
1036 повідомлень
#17 років тому
p_fateev, оставьте эту идею. NET это не то, что можно хорошо защитить)
62 повідомлення
#17 років тому
Я уже готов с этим согласиться, но многочисленные разработчики обфускаторов, предлагающие свои продукты за бешеные деньги, вероятно, имеют на этот счет иное мнение...
1090 повідомлень
#17 років тому
Можно некоторые ключевые функции программы вынести в DLL (ActiveX или Native).
62 повідомлення
#17 років тому
Заказчику нужна программа, требующая регистрации (проверки рег. ключа), поэтому частичная защита не подходит, так как даже если фукции проверки регистрационного кода вынести, в любом случае их можно будет обойти
3240 повідомлень
#17 років тому
Цитата ("p_fateev"):До сих пор не могу найти оптимального решения - все перепробованные способы или требуют кучу денег или приводят к неработоспособности программы. Может кто-нибудь даст полезный совет в этом вопросе?
А можете ли пожалуйста привести пример таких систем, которые "требуют кучу денег", и сколько именно они стоят?
Может быть "куча денег" - это вовсе не куча, а мелочевка для заказчика?
62 повідомлення
#17 років тому
Цитата ("AntiKom"):Вот почитай может пригодится ]http://www.gotdotnet.ru/LearnDotNet/NETFramework/125201.aspx
Спасибо за ссылку, я уже не раз перечитывал эту статью.
62 повідомлення
#17 років тому
Например, Inquartos ® Obfuscator стоит 8000 рублей. При этом бесплатная ограниченная версия "калечит" программу. Я не думаю, что советовать заказчику этот вариант - отличная идея.
3240 повідомлень
#17 років тому
8000 руб (350 USD) - мелочи для любого разумного заказчика, если он конечно не студент.Это разовая трата, и при этом приобретается продукт, который можно использовать для всех своих проектов.
А разработка подобного же решения с нуля своими силами выйдет неизмеримо дороже.
Ведь стоимость разработки не очень мощного .NET обфускатора - не менее 2-3 человеко-месяцев (даже если считать по джуниорскому рейту 10 USD в час, бюджет будет не менее 4000 USD).
Другой вопрос, что оно, возможно, кривое, и что-то "калечит".
В этом случае нужно выбрать другой солюшен, или с пообщаться с их саппортом, чтобы посмотреть на платную версию в работе.
62 повідомлення
#17 років тому
В принципе, я согласен с тем, что мне, как .NET разработчику, не помешало бы иметь среди своего инструментария какой-нибудь более-менее приличный обфускатор (купленный за средства какого-нибудь заказчика 
120 повідомлень
#17 років тому
Так все таки от декомпиляции или просмотра исходных текстов? Ищите вы все же обфускатор.А вы пробовали декомпилить свое творчество, видели исходные тексты? Насколько они "похожи" на оригинал?
62 повідомлення
#17 років тому
Еще раз о сути вопроса: есть программа, написана на C#. Необходимо защитить программу от возможности внешнего вмешетельства, а именно обхода метода, проверяющего наличие и валидность серийного номера. Большое спасибо всем, кто откликнулся на мое сообщение, но мне хотельсь бы услышать совет от кого-нибудь, кто также сталкивался с такой проблемой и кому удалось все-таки ее решить. Я не сказал бы, что все сводится к поиску обфускатора - есть и другие решения этой проблемы (например, посилання), но если кто-нибудь мне скажет, что с успехом польуется каким-нибудь обфускатором и доволен этим - это тоже будет тот совет, которого я ожидал.
300 повідомлень
#17 років тому
Как человек, занимавшийся декомпиляцией всего и вся скажу вам откровенно - нихера у вас не получится. Грамотный кракер если даже не получит исходный код, который можно скрыть обфускатором, то за день-два изучит байт-код обычным декомпилером и по нему восстановит алгоритм генерации ключа, либо сделает битхак на пару-тройку команд и обойдет всю проверку. Защитить ПО чисто программными методами невозможно. А уж ПО на .NET и подавно.
3240 повідомлень
#17 років тому
akkort, конечно, 100% защиты нет, но можно код усложнить.Например, нормальный обфускатор не только делает код нечитаемым, но и добавляет в него избыточный код, который ничего не делает. Бессмысленные присваивания переменных, небольшие циклы, куски крипто-алгоритмов.
Да, это несколько ухудшает производительность продукта... но зато тот, кто исследует код, вынужден тратить очень много времени на исследование огромного количества сложных, запутанных и бессмысленных конструкций.
Таким образом, на то, чтобы разобраться в подобном коде, можно тратить месяцы и годы, тем более учитывая, что в случае с .NET разбираться придется в IL, а не в высокоуровневых исходниках.