Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы.
Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это? И как тогда вообще защищать
программы от такого?
Здравствуйте, YaroslavPavlov, Вы писали:
YP>Здравствуйте.
YP>Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы. YP>Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это? И как тогда вообще защищать YP>программы от такого?
Конечно правда. .NET Reflector, ildasm, etc.
Защищать? Ну, во-первых, стоит ли? Во-вторых, обфускаторами.
Здравствуйте, YaroslavPavlov, Вы писали:
YP>Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы. YP>Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это?
Правда. Такая же как то что твой код и так никому не нужен. Так что просто забей.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, YaroslavPavlov, Вы писали:
YP>Здравствуйте.
YP>Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы. YP>Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это? И как тогда вообще защищать YP>программы от такого?
У нас на работе мне отказались давать исходники из соседней комнаты. Дали тока dll-ки, вот я сижу и с помощью ILSpy изучаю как их программа работает внутри Оч удобно.
Здравствуйте, Rival, Вы писали:
R>Причём достаточно часто очень хотят защитить код люди, которые мало что умеют. R>Наверное думают по принципу: "Не дам украсть последнее!"
Я вижу смысл в защите кода только при одном условии, если это код защиты от копирования. В остальных это баловство. Код серьезного объема и сложности, даже при наличии документации, не всегда понять можно. Так что это просто привычки из прошлых времен.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Я вижу смысл в защите кода только при одном условии, если это код защиты от копирования. В остальных это баловство.
Да, ну может ещё есть случаи, при каких-то особых нишевых алгоритмах и пр. Когда это в основном связано с математикой. Но это в основном на всяких ЧПУ, на дотнете такого и нет почти.
«История жизни – это, по существу, развитие сознания, которое завуалировано морфологией.» Пьер Тейяр де Шарден
Здравствуйте, Rival, Вы писали:
R>Да, ну может ещё есть случаи, при каких-то особых нишевых алгоритмах и пр. Когда это в основном связано с математикой. Но это в основном на всяких ЧПУ, на дотнете такого и нет почти.
Ты языки для ЧПУ видел? Не знаю как сейчас, но 15 лет назад это бы тот еще красворд. Там шифровать ничего не надо было .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Защита кода от декомпиляции
От:
Аноним
Дата:
28.10.11 15:34
Оценка:
Здравствуйте, YaroslavPavlov, Вы писали:
YP>Здравствуйте.
YP>Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы. YP>Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это? И как тогда вообще защищать YP>программы от такого?
Пиши говнокод, который и в обычных исходниках страшно смотреть.
Здравствуйте, YaroslavPavlov, Вы писали:
YP> И как тогда вообще защищать программы от такого?
Видимо главный вопрос — для какой цели? Потому как обход защиты это всего лишь вопрос времени. При этом бывает, что "кошмарно" накрученные защиты, обходятся абсолютно просто со стороны о которой разработчик просто не подумал.
Мне кажется, достаточно какой либо простенькой защиты от "массы" если уж сильно хочется.
Здравствуйте, YaroslavPavlov, Вы писали:
YP>Здравствуйте.
YP>Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы. YP>Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это? И как тогда вообще защищать YP>программы от такого?
Такое впечатление создается. что тут советуют только люди просиживающие в какихто конторках и никогда не писавших коммерческий продукт!
Когда коллектив потратил кучу времени, сил и бабла на разработку, а потом ему предлагают типа нечего там обфусцировать — никому дескать не нужен ваш код! — как же не нужен — ежели за него кучу килобаксов выплачено!!!
Странные однако люди!))
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, YaroslavPavlov, Вы писали:
YP>>Здравствуйте.
YP>>Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы. YP>>Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это? И как тогда вообще защищать YP>>программы от такого?
А>Такое впечатление создается. что тут советуют только люди просиживающие в какихто конторках и никогда не писавших коммерческий продукт! А>Когда коллектив потратил кучу времени, сил и бабла на разработку, а потом ему предлагают типа нечего там обфусцировать — никому дескать не нужен ваш код! — как же не нужен — ежели за него кучу килобаксов выплачено!!! А>Странные однако люди!))
Ну вот декомплировал ты продукт. Получил, я не знаю, 500 тыщ строк кода. Что дальше, гений из коммерческой разработки?
С уважением, Анатолий Попов.
ICQ: 995-908
Re: Защита кода от декомпиляции
От:
Аноним
Дата:
29.10.11 16:51
Оценка:
YP>Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы. YP>Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это? И как тогда вообще защищать YP>программы от такого?
Обфусцированый код тоже ломается. Серьезно защищать стоит только серьезный софт, который от 100 килорублей стоит. И это уже хардварная защита, что-то хаспоподобное, где критичные куски кода исполняются на уникальном ключе с памятью write-only, но это сам понимаешь или коробочный продукт, или высылать ключи по почте.
Здравствуйте, Rival, Вы писали:
VD>>Я вижу смысл в защите кода только при одном условии, если это код защиты от копирования. В остальных это баловство. R>Да, ну может ещё есть случаи, при каких-то особых нишевых алгоритмах и пр. Когда это в основном связано с математикой. Но это в основном на всяких ЧПУ, на дотнете такого и нет почти.
Ну вот к примеру — наша компания делает железки (GPS/глонасс трекеры) и софт. Железки стоят денег, софт бесплатный. Но! Софт работает только с нашим железом. Подключение чужих трекеров не делается из политических соображений. Своеобразный vendor lock. И мы не хотим, чтобы наш софт начал работать с трекерами других производителей или каким-нибудь китайским говном.
Здравствуйте, denisio_mcp, Вы писали:
_>Ну вот к примеру — наша компания делает железки (GPS/глонасс трекеры) и софт. Железки стоят денег, софт бесплатный. Но! Софт работает только с нашим железом. Подключение чужих трекеров не делается из политических соображений. Своеобразный vendor lock. И мы не хотим, чтобы наш софт начал работать с трекерами других производителей или каким-нибудь китайским говном.
Это уже ваш фейл, такую кривую бизнес-модель нужно прекращать, чем раньше — тем меньше убытков в печальном итоге. Понятно, что если вы сделали просто очередной GPS-трекер которых 100500 уже разных, когда даже дядюшка Ляо уже замучился придумывать под каким названием выпустить очередной трекер то это ничего не стоит. Лезете на перегретый рынок и хотите что-то заработать? Мда..
Спасительная соломинка конечно, подумать что именно софт — основная ценная часть, делающая вас уникальными. Которая придает ликвидности железу... Но... Тут ваша бизнес-модель облажались. Придавать ликвидность ничего не стоящим софтом почти ничего не стоящему железу -- это примерно как финансовая модель США — ликвидность новых займов подкрепляется экономическими показателями, которые в свою очередь появились из ликвидности предыдущих займов.
Мюнхаузен сам себя за волосы из озера вытаскивает.
Измненить тенденцию вы сможете только если софт станет платный, но тут вы врядли придумали что-то новое, и, как и в железе, вы врядли сможете конкурировать с дядюшкой Ляо и тысячами других производителей. Вам бы определиться — зарабатываете на железе — сделайте уникальный трекер и продавайте. Зарабатываете на софте — сделайте уникальный софт для трекеров и продавайте. А если каждый из этих компонентов легко подменить и заменить армадой аналогов, то какой тогда смысл в вашем бизнесе?
Обфускация тут ни при чем.
Хочу инвайт на хабру :)
Re[4]: Защита кода от декомпиляции
От:
Аноним
Дата:
30.10.11 12:33
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>Я вижу смысл в защите кода только при одном условии, если это код защиты от копирования. В остальных это баловство.
Не только. Например (и это наиболее частый случай, кстати), прятать нужно реализации всяких проприетарных протоколов. Например, протоколы клиентов всяких MMORPG и прочей дребедени, чтобы читеры их не подделывали. А защита от копирования обычно отрубается вся целиком, и не важно, что там было у нее внутри.
Здравствуйте, Аноним, Вы писали:
А> Не только. Например (и это наиболее частый случай, кстати), прятать нужно реализации всяких проприетарных протоколов. Например, протоколы клиентов всяких MMORPG и прочей дребедени, чтобы читеры их не подделывали.
Вот это полная и кромешная дурь. Для взламывания протоколов даже в дотнете не нужно разбираться. Нужно просто продумывать протокол так, чтобы какие-то привилегии нельзя было получить на клиенте. Клиент должен только слать информацию о действиях пользователя, а уже ее интерпретацией должен заниматься сервер.
А>А защита от копирования обычно отрубается вся целиком, и не важно, что там было у нее внутри.
Защита от копирования тоже не панацея. Но при продаже "коробок" других путей защиты нет. Сделать защиту которая бы была трудна для взлома и часто приводила бы к частичной или полной неработоспособности взломанного софта таки можно. Такой сот как игры собирает 80% бабок в первый месяц продаж. Если защита проживет месяц, а цена невысока, то ее задача будет выполнена.
Так вот в защите от копирования правильным приемом будет разбрасывание генерируемых функций вставляемых во все места софта и изскажающие вычисления в случае нарушений защиты. Тут без обфускации, конечно, никуда.
ЗЫ
Тем кто хочет заниматься защитой стоило бы для начала пучиться ломать программы. Тогда и вопросов было бы по меньше.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Аноним, Вы писали:
А> Не только. Например (и это наиболее частый случай, кстати), прятать нужно реализации всяких проприетарных протоколов. Например, протоколы клиентов всяких MMORPG и прочей дребедени, чтобы читеры их не подделывали. А защита от копирования обычно отрубается вся целиком, и не важно, что там было у нее внутри.
При создании подобных приложений надо всегда думать "мне придется опубликовать сетевой протокол игрового клиента на оф.сайте".
Если ты заказчик, ты должен тоже самое сказать девелоперам. И все встанет на свои места.
Бизнес-логику нельзя держать на клиенте! Чем тупее клиент — тем лучше.
Если все сделано грамотно, злоумышленнику не будет никакого толка, что у него есть спецификации клиентского протокола. Он что, свой собственный игровой клиент нарисует? Ну и флаг в руки! если у него получится лучше чем у тебя, то тебе же лучше, денежки-то небось за подключение к серверу берутся?
Во-вторых если ты уже наступил на грабли, не разделил игрового и админского клиента, а проект уже в релизе, т.е. у тебя в коде клиента содержатся методы типа "BanAccount(UUID clientID)", то относительно малой кровью можно обойтись сделав так.. Удаляешь всю эту фигню, и создаешь "AdminSendCommand(string str)". А команду вводишь текстом с консоли, парсит её сервер. Теперь что толку хакеру что он знает что эта команда есть? А дальше с ней ему что делать? Механизм парсинга на сервере он не знает, команды и шаблоны админских текстовых команд в коде игрового клиента не содержатся.
Согласись как просто, гораздо проще, надежнее, и быстрее заморочек с обфускаторами и защитами.
Не нужен тебе обфускатор и защита.