2010-05-05 4 views
4

Сегодня я играл с рефлектором .Net и понял, что весь пакет Expression от Miicrosoft написан на .Net. В результате я в значительной степени смог увидеть базовый код для выражения. Это значительно упрощает защиту двоичных файлов. Я думаю, что это очень важно. Обычно рекомендуется делать коммерческое программное обеспечение в .Net, где довольно легко увидеть исходный код до имен переменных? Я был удивлен, что Microsoft, по крайней мере, не пресекла его. СпасибоПолезно ли использовать .Net для коммерческого программного обеспечения?

+0

Истина проще всего переделать, чем перепроектировать, есть другие механизмы защиты интеллектуальной собственности сверх схем защиты от копирования. – CurtainDog

ответ

4

Я бы рассмотрел возможность полностью отменить имена переменных (и, возможно, комментарии). .NET Reflector и Java Decompiler довольно приятные.

Даже если это было написано на C или C++, для RCE это ничего не значит. Люди резали зубы, читали сборку и возились с OllyDBG, IDA Pro и т. П. Microsoft предлагает свои собственные инструменты для изменения собственного кода.

Учитывая, насколько коммерческое программное обеспечение Java и .NET уже существует (и насколько оно легко декомпилировано), я сомневаюсь, что использование .NET, над Java, над C++, C или сборкой имеет большое значение при сравнении того, насколько легко он должен вернуть исходную исходную форму.

Сказав это, большая часть коммерческого программного обеспечения .NET, с которым я столкнулся, записывает ядро ​​своей программы в (что, по-видимому,) библиотеку C++, а затем взаимодействует с ней через приложение .NET.

5

Любое приложение, которое стоит покупать - особенно крупное, например Expression, - не имеет ни одной части, которая, если разобрана и скопирована, уменьшит ее конкурентное преимущество.

С другой стороны, было бы бессмысленно разбирать и копировать всю кодовую базу, поскольку это было бы так очевидно.

Короче говоря, мы здесь не говорим о конденсаторах потока.

+1

Я просто ссылаюсь на обход лицензирования – jmasterx

2

То, что вы видите в отражателе, декомпилировано IL. Нет практического способа обфускации этого, кроме как изменить имена идентификаторов.

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

2

MS не нуждается в обфускации своего кода для защиты ИС, если у них есть армия юристов, которые могут подать иск в любую организацию, пытающуюся использовать код для создания конкурирующего продукта. Даже если у вас нет армии юристов, есть ли что-нибудь столь новое в вашем коде, которое оправдывало бы затраты на обратное проектирование? Большинство клиентов будут пытаться использовать законное программное обеспечение, поскольку риски, связанные с использованием слабо поддерживаемого незаконного программного обеспечения, слишком высоки. Любой мог бы взять рождение Стивена Кинга и скопировать все написанные в нем слова, поскольку они все там, ясно видно, но он все еще может получить значительную прибыль от доброй воли своих читателей, которые покупают его книги.

-1

Да, .NET - жизнеспособная коммерческая платформа, но мы (то есть OffByZero, компания, которой я являюсь соучредителем) настоятельно рекомендую использовать обфускатор для чувствительного кода как в .NET, так и в Java. От Developing for Software Protection and Licensing:

Если вы разрабатываете в .NET или Java, доставка не-затемненный применение почти эквивалентно доставке в виде исходного кода.Если вас интересует об интеллектуальной собственности в пределах ваш код (особенно если вы , взаимодействующий с устройствами в моде , которые могут разоблачить коммерческие секреты), то вам нужно использовать качественный обфускатор.

...

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

Смежные вопросы