Защита кода от декомпиляции
От: YaroslavPavlov Россия  
Дата: 28.10.11 07:52
Оценка:
Здравствуйте.

Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы.
Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это? И как тогда вообще защищать
программы от такого?
Re: Защита кода от декомпиляции
От: Aen Sidhe Россия Просто блог
Дата: 28.10.11 08:12
Оценка:
Здравствуйте, YaroslavPavlov, Вы писали:

YP>Здравствуйте.


YP>Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы.

YP>Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это? И как тогда вообще защищать
YP>программы от такого?

Конечно правда. .NET Reflector, ildasm, etc.

Защищать? Ну, во-первых, стоит ли? Во-вторых, обфускаторами.
С уважением, Анатолий Попов.
ICQ: 995-908
Re: Защита кода от декомпиляции
От: 2k9software  
Дата: 28.10.11 08:17
Оценка:
Декомпиляция http://forum.reverse4you.org/showthread.php?t=792&page=1

Читайте на тему обфускации кода:

http://www.cyberguru.ru/dotnet/net-framework/net-obfuscation.html

и вот

Обфускация
Re: Защита кода от декомпиляции
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.10.11 08:51
Оценка: 1 (1) +5 -1 :)))
Здравствуйте, YaroslavPavlov, Вы писали:

YP>Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы.

YP>Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это?

Правда. Такая же как то что твой код и так никому не нужен. Так что просто забей.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Защита кода от декомпиляции
От: Vaako Украина  
Дата: 28.10.11 10:41
Оценка:
Здравствуйте, YaroslavPavlov, Вы писали:

YP>Здравствуйте.


YP>Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы.

YP>Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это? И как тогда вообще защищать
YP>программы от такого?

У нас на работе мне отказались давать исходники из соседней комнаты. Дали тока dll-ки, вот я сижу и с помощью ILSpy изучаю как их программа работает внутри Оч удобно.
Re[2]: Защита кода от декомпиляции
От: Rival Таиланд
Дата: 28.10.11 11:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Правда. Такая же как то что твой код и так никому не нужен. Так что просто забей.


Причём достаточно часто очень хотят защитить код люди, которые мало что умеют.
Наверное думают по принципу: "Не дам украсть последнее!"
«История жизни – это, по существу, развитие сознания, которое завуалировано морфологией.» Пьер Тейяр де Шарден
Re[3]: Защита кода от декомпиляции
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.10.11 11:27
Оценка: +1
Здравствуйте, Rival, Вы писали:

R>Причём достаточно часто очень хотят защитить код люди, которые мало что умеют.

R>Наверное думают по принципу: "Не дам украсть последнее!"

Я вижу смысл в защите кода только при одном условии, если это код защиты от копирования. В остальных это баловство. Код серьезного объема и сложности, даже при наличии документации, не всегда понять можно. Так что это просто привычки из прошлых времен.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Защита кода от декомпиляции
От: Rival Таиланд
Дата: 28.10.11 12:30
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я вижу смысл в защите кода только при одном условии, если это код защиты от копирования. В остальных это баловство.


Да, ну может ещё есть случаи, при каких-то особых нишевых алгоритмах и пр. Когда это в основном связано с математикой. Но это в основном на всяких ЧПУ, на дотнете такого и нет почти.
«История жизни – это, по существу, развитие сознания, которое завуалировано морфологией.» Пьер Тейяр де Шарден
Re[5]: Защита кода от декомпиляции
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.10.11 12:52
Оценка:
Здравствуйте, Rival, Вы писали:

R>Да, ну может ещё есть случаи, при каких-то особых нишевых алгоритмах и пр. Когда это в основном связано с математикой. Но это в основном на всяких ЧПУ, на дотнете такого и нет почти.


Ты языки для ЧПУ видел? Не знаю как сейчас, но 15 лет назад это бы тот еще красворд. Там шифровать ничего не надо было .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Защита кода от декомпиляции
От: Аноним  
Дата: 28.10.11 15:34
Оценка:
Здравствуйте, YaroslavPavlov, Вы писали:

YP>Здравствуйте.


YP>Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы.

YP>Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это? И как тогда вообще защищать
YP>программы от такого?

Пиши говнокод, который и в обычных исходниках страшно смотреть.
Re[2]: Защита кода от декомпиляции
От: grosborn  
Дата: 28.10.11 15:45
Оценка:
> Пиши говнокод, который и в обычных исходниках страшно смотреть.

Что-то в этом есть. Надо будет подыскать тошнотворных примеров кода.
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re: Защита кода от декомпиляции
От: AlexNek  
Дата: 28.10.11 17:56
Оценка:
Здравствуйте, YaroslavPavlov, Вы писали:

YP> И как тогда вообще защищать программы от такого?

Видимо главный вопрос — для какой цели? Потому как обход защиты это всего лишь вопрос времени. При этом бывает, что "кошмарно" накрученные защиты, обходятся абсолютно просто со стороны о которой разработчик просто не подумал.

Мне кажется, достаточно какой либо простенькой защиты от "массы" если уж сильно хочется.
Cообщение написано в << RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461>>
Re: Защита кода от декомпиляции
От: Аноним  
Дата: 29.10.11 12:35
Оценка: -1 :)
Здравствуйте, YaroslavPavlov, Вы писали:

YP>Здравствуйте.


YP>Не так давно перешел на программирование под .Net, а тут мне сказали, что для .Net, есть специальные декомпиляторы.

YP>Которые преобразуют скомпилированную программу обратно в удобочитаемый код. Правда ли это? И как тогда вообще защищать
YP>программы от такого?

Такое впечатление создается. что тут советуют только люди просиживающие в какихто конторках и никогда не писавших коммерческий продукт!
Когда коллектив потратил кучу времени, сил и бабла на разработку, а потом ему предлагают типа нечего там обфусцировать — никому дескать не нужен ваш код! — как же не нужен — ежели за него кучу килобаксов выплачено!!!
Странные однако люди!))
Re[2]: Защита кода от декомпиляции
От: Aen Sidhe Россия Просто блог
Дата: 29.10.11 12:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, 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, но это сам понимаешь или коробочный продукт, или высылать ключи по почте.
Re[5]: Защита кода от декомпиляции
От: denisio_mcp  
Дата: 29.10.11 19:07
Оценка: :)
Здравствуйте, Rival, Вы писали:

VD>>Я вижу смысл в защите кода только при одном условии, если это код защиты от копирования. В остальных это баловство.

R>Да, ну может ещё есть случаи, при каких-то особых нишевых алгоритмах и пр. Когда это в основном связано с математикой. Но это в основном на всяких ЧПУ, на дотнете такого и нет почти.

Ну вот к примеру — наша компания делает железки (GPS/глонасс трекеры) и софт. Железки стоят денег, софт бесплатный. Но! Софт работает только с нашим железом. Подключение чужих трекеров не делается из политических соображений. Своеобразный vendor lock. И мы не хотим, чтобы наш софт начал работать с трекерами других производителей или каким-нибудь китайским говном.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[6]: Защита кода от декомпиляции
От: enCobalt  
Дата: 29.10.11 19:52
Оценка: +1 :)
Здравствуйте, denisio_mcp, Вы писали:

_>Ну вот к примеру — наша компания делает железки (GPS/глонасс трекеры) и софт. Железки стоят денег, софт бесплатный. Но! Софт работает только с нашим железом. Подключение чужих трекеров не делается из политических соображений. Своеобразный vendor lock. И мы не хотим, чтобы наш софт начал работать с трекерами других производителей или каким-нибудь китайским говном.


Это уже ваш фейл, такую кривую бизнес-модель нужно прекращать, чем раньше — тем меньше убытков в печальном итоге. Понятно, что если вы сделали просто очередной GPS-трекер которых 100500 уже разных, когда даже дядюшка Ляо уже замучился придумывать под каким названием выпустить очередной трекер то это ничего не стоит. Лезете на перегретый рынок и хотите что-то заработать? Мда..

Спасительная соломинка конечно, подумать что именно софт — основная ценная часть, делающая вас уникальными. Которая придает ликвидности железу... Но... Тут ваша бизнес-модель облажались. Придавать ликвидность ничего не стоящим софтом почти ничего не стоящему железу -- это примерно как финансовая модель США — ликвидность новых займов подкрепляется экономическими показателями, которые в свою очередь появились из ликвидности предыдущих займов.
Мюнхаузен сам себя за волосы из озера вытаскивает.

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

Обфускация тут ни при чем.
Хочу инвайт на хабру :)
Re[4]: Защита кода от декомпиляции
От: Аноним  
Дата: 30.10.11 12:33
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я вижу смысл в защите кода только при одном условии, если это код защиты от копирования. В остальных это баловство.


Не только. Например (и это наиболее частый случай, кстати), прятать нужно реализации всяких проприетарных протоколов. Например, протоколы клиентов всяких MMORPG и прочей дребедени, чтобы читеры их не подделывали. А защита от копирования обычно отрубается вся целиком, и не важно, что там было у нее внутри.
Re[5]: Защита кода от декомпиляции
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.10.11 14:14
Оценка: 1 (1) +1 -1
Здравствуйте, Аноним, Вы писали:

А> Не только. Например (и это наиболее частый случай, кстати), прятать нужно реализации всяких проприетарных протоколов. Например, протоколы клиентов всяких MMORPG и прочей дребедени, чтобы читеры их не подделывали.


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

А>А защита от копирования обычно отрубается вся целиком, и не важно, что там было у нее внутри.


Защита от копирования тоже не панацея. Но при продаже "коробок" других путей защиты нет. Сделать защиту которая бы была трудна для взлома и часто приводила бы к частичной или полной неработоспособности взломанного софта таки можно. Такой сот как игры собирает 80% бабок в первый месяц продаж. Если защита проживет месяц, а цена невысока, то ее задача будет выполнена.

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

ЗЫ

Тем кто хочет заниматься защитой стоило бы для начала пучиться ломать программы. Тогда и вопросов было бы по меньше.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Защита кода от декомпиляции
От: enCobalt  
Дата: 30.10.11 15:45
Оценка: -1
Здравствуйте, Аноним, Вы писали:

А> Не только. Например (и это наиболее частый случай, кстати), прятать нужно реализации всяких проприетарных протоколов. Например, протоколы клиентов всяких MMORPG и прочей дребедени, чтобы читеры их не подделывали. А защита от копирования обычно отрубается вся целиком, и не важно, что там было у нее внутри.


При создании подобных приложений надо всегда думать "мне придется опубликовать сетевой протокол игрового клиента на оф.сайте".
Если ты заказчик, ты должен тоже самое сказать девелоперам. И все встанет на свои места.

Бизнес-логику нельзя держать на клиенте! Чем тупее клиент — тем лучше.
Если все сделано грамотно, злоумышленнику не будет никакого толка, что у него есть спецификации клиентского протокола. Он что, свой собственный игровой клиент нарисует? Ну и флаг в руки! если у него получится лучше чем у тебя, то тебе же лучше, денежки-то небось за подключение к серверу берутся?

Во-вторых если ты уже наступил на грабли, не разделил игрового и админского клиента, а проект уже в релизе, т.е. у тебя в коде клиента содержатся методы типа "BanAccount(UUID clientID)", то относительно малой кровью можно обойтись сделав так.. Удаляешь всю эту фигню, и создаешь "AdminSendCommand(string str)". А команду вводишь текстом с консоли, парсит её сервер. Теперь что толку хакеру что он знает что эта команда есть? А дальше с ней ему что делать? Механизм парсинга на сервере он не знает, команды и шаблоны админских текстовых команд в коде игрового клиента не содержатся.
Согласись как просто, гораздо проще, надежнее, и быстрее заморочек с обфускаторами и защитами.
Не нужен тебе обфускатор и защита.
Хочу инвайт на хабру :)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.