Первое, что я узнал, когда начал работать с C #, было самым важным. Вы можете декомпилировать любую сборку .NET с помощью Reflector или других инструментов. Многие разработчики не знают об этом факте, и большинство из них шокированы, когда я показываю им их исходный код.
Защита от декомпиляции по-прежнему остается сложной задачей. Я все еще ищу быстрый, простой и безопасный способ сделать это. Я не хочу запутывать свой код, чтобы имена моих методов были a, b, c или около того. Reflector или другие инструменты должны вообще не распознавать мое приложение как сборку .NET. Я уже знаю о некоторых инструментах, но они очень дорогие.
Есть ли другой способ защитить мои приложения?
Причина моего вопроса не в том, чтобы предотвратить пиратство. Я только хочу, чтобы конкуренты не читали мой код. Я знаю, что они это сделают, и они уже сделали это. Мне даже так сказали. Может быть, я немного параноик, но конкуренты, читающие мой код, не доставляют мне удовольствия.
задан 19 марта ’10, 11:03
Как Защитить DLL от Взлома на C++
Если рефлектор не может определить, является ли ваше приложение сборкой .NET, то как приложение пытается его загрузить? — Brian
Re «Я не хочу запутывать свой код, чтобы имена моих методов были a, b, c или около того». Почему нет? Это очевидная вещь, которую нужно сделать, чтобы конкурентам было сложнее разобраться в вашей логике. — ToolmakerSteve
Да уж, запутывание 100% «просто работает». Во-первых, вы не должны вкладывать в свой код «секреты», то, что «однажды обнаруженное в коде может поставить под угрозу безопасность». Во-вторых, вы когда-нибудь брали код на GitHub и пытались его перепрофилировать? Я имею в виду, что даже не обфусцированный код может быть безумным для перепрофилирования из-за используемых парадигм, связывания классов, размытых обязанностей класса, фестиваля зависимостей, фестивалей обратного вызова и многого другого. Это означает, что ваш запутанный код совершенно безопасен, пока мы не получим программистов-роботов, способных понимать логику программирования и быстро переписывать / реорганизовывать код, что произойдет не скоро. — Felype
13 ответы
Следует иметь в виду, что вы хотите делать это так, чтобы это было целесообразно для бизнеса. Для этого вам нужно определить свои цели. Итак, каковы ваши цели?
Предотвращение пиратства? Эта цель недостижима. Даже собственный код можно декомпилировать или взломать; множество программных продуктов, доступных в Интернете (даже для таких продуктов, как Windows и Photoshop), является доказательством того, что решительный хакер всегда может получить к ним доступ.
Если вы не можете предотвратить пиратство, как насчет того, чтобы просто уменьшить его? Это тоже заблуждение. Достаточно одного человека, чтобы взломать ваш код, чтобы он стал доступен всем. Каждый раз нужно быть удачливым. Пиратам только один раз повезет.
Я положил это тебе цель должна заключаться в максимизации прибыли. Похоже, вы считаете, что для этого необходимо остановить пиратство. Нет. Прибыль — это просто доход за вычетом затрат. Остановить пиратство увеличивается расходы. Это требует усилий, что означает добавление затрат где-то в процессе и, таким образом, уменьшает эту часть уравнения.
КАК ЗАЩИТИТЬ СВОЮ ИГРУ?
Защита вашего продукта также не способствует увеличению вашего дохода. Я знаю, что вы смотрите на всех этих пиратов и видите, сколько денег вы могли бы заработать, если бы вместо этого они заплатили вам лицензионные сборы, но на самом деле это будет никогда случаться. Здесь есть некоторые преувеличения, но обычно считается, что пираты, которые не могут взломать вашу систему безопасности, либо найдут аналогичный продукт, который они могут взломать, либо обойдутся без него. Они будут никогда вместо этого покупают, и поэтому они делают не представляют упущенные продажи.
Кроме того, защита вашего продукта на самом деле снижает доходы. На это есть две причины. Один из них — это небольшой процент клиентов, у которых возникают проблемы с вашей активацией или безопасностью, и поэтому они решают не покупать снова или требовать возврата денег.
Другой — небольшой процент людей, которые на самом деле пробуют пиратскую версию программного обеспечения, чтобы убедиться, что она работает, перед покупкой. Ограничение пиратского распространения вашего продукта (if вы каким-то образом можете преуспеть в этом) мешает этим людям когда-либо пробовать ваш продукт, и поэтому они никогда не купят его. Более того, пиратство также может способствовать распространению вашего продукта среди более широкой аудитории, таким образом охватывая большее количество людей, которые будут готовы за него платить.
Лучшая стратегия — предположить, что ваш продукт будет пиратским, и подумать о том, как воспользоваться ситуацией. Еще пара ссылок по теме:
Как предотвратить кражу кода?
Защита приложения .NET
Источник: stackovergo.com
Как я могу защитить свои сборки .NET от декомпиляции?
Один, если первые вещи, которые я узнал, когда я начал с С#, был самым важным. Вы можете декомпилировать любую сборку .NET с помощью Reflector или других инструментов. Многие разработчики не знают об этом факте, и большинство из них шокированы, когда я показываю им исходный код. Защита от декомпиляции по-прежнему остается сложной задачей.
Я все еще ищу быстрый, простой и безопасный способ сделать это. Я не хочу обфускать свой код, поэтому мои имена методов будут a, b, c или так. Отражатель или другие инструменты не должны распознавать мое приложение как сборку .NET вообще. Я уже знаю о некоторых инструментах, но они очень дороги. Есть ли другой способ защитить мои приложения?
EDIT: Причина моего вопроса — не предотвращать пиратство. Я только хочу, чтобы участники не читали мой код. Я знаю, что они будут, и они уже сделали. Они даже сказали мне об этом. Может быть, я немного параноик, но деловые соперники, читающие мой код, не заставляют меня чувствовать себя хорошо.
TalkingCode 19 март 2010, в 16:18
Поделиться
Если рефлектор не может определить, является ли ваше приложение сборкой .NET, то как приложение пытается его загрузить?
Brian 19 март 2010, в 15:57
Re «Я не хочу запутывать свой код, поэтому имена моих методов будут a, b, c или около того». Почему бы и нет? Это очевидная вещь, которую нужно сделать, чтобы конкурентам было сложнее разобраться в вашей логике.
ToolmakerSteve 01 июнь 2015, в 23:34
Ага обфускация 100% «просто работает». Во-первых, вы не должны помещать «секреты» в свой код, вещи, которые «найденные в коде, могут поставить под угрозу безопасность». Во-вторых, вы когда-нибудь брали код на GitHub и пытались переназначить его? Я имею в виду, что даже не обфусцированный код может быть безумным для перепрофилирования из-за используемых парадигм, связи классов, нечеткой ответственности классов, фестивалей зависимостей, фестивалей обратного вызова и многого другого. Это означает, что ваш запутанный код совершенно безопасен, пока мы не получим программистов-роботов, способных понимать логику программирования и быстро переписывать / реорганизовывать код, что скоро произойдет.
Felype 25 окт. 2017, в 12:46
Показать ещё 1 комментарий
Поделиться:
decompiling
13 ответов
Лучший ответ
Одна вещь, о которой нужно помнить, заключается в том, что вы хотите сделать это таким образом, чтобы иметь смысл в бизнесе. Для этого вам необходимо определить свои цели. Итак, каковы ваши цели?
Предотвращение пиратства? Эта цель не достижима. Даже собственный код может быть декомпилирован или взломан; множество товаров, доступных в Интернете (даже для таких продуктов, как Windows и Photoshop), является доказательством того, что определенный хакер всегда может получить доступ.
Если вы не можете предотвратить пиратство, то как насчет его сокращения? Это тоже ошибочно. Только один человек взламывает ваш код, чтобы он был доступен для всех. Вы должны быть счастливы каждый раз. Пиратам нужно только однажды повезти.
Я предлагаю вам цель состоит в том, чтобы максимизировать прибыль. Вы, кажется, полагаете, что для этого необходимо остановить пиратство. Это не. Прибыль — это просто минус расходы. Прекращение пиратства увеличивает затраты.
Это требует усилий, что означает добавление стоимости где-то в процессе и, следовательно, уменьшает эту сторону уравнения. Защита вашего продукта также не делает ничего, чтобы увеличить ваш доход. Я знаю, что вы смотрите на всех этих пиратов и видите все деньги, которые вы могли бы сделать, только если бы они заплатили ваши лицензионные сборы, но реальность такова, что это никогда не произойдет. Здесь есть какая-то гипербола, но обычно считается, что пираты, которые не могут взломать вашу безопасность, либо найдут аналогичный продукт, который они могут взломать или обойтись без него. Они никогда не будут покупать его вместо этого, и поэтому они не представляют собой потерянные продажи.
Кроме того, защита вашего продукта фактически снижает доход. Для этого есть две причины. Один из них — это небольшой процент клиентов, у которых есть проблемы с активацией или безопасностью, и поэтому решают не покупать снова или не запрашивать свои деньги.
Другой — это небольшой процент людей, которые на самом деле пытаются использовать пиратскую версию программного обеспечения, чтобы убедиться, что она работает до покупки. Ограничение пиратского распространения вашего продукта (если вы каким-то образом преуспеваете в этом) не позволяет этим людям когда-либо пытаться ваш продукт, и поэтому они никогда его не купят. Более того, пиратство также может помочь вашему продукту распространиться на более широкую аудиторию, тем самым охватив больше людей, которые будут готовы платить за это.
Лучшая стратегия — предположить, что ваш продукт будет пиратским, и подумайте о том, как использовать ситуацию. Еще несколько ссылок на эту тему:
Как предотвратить кражу моего кода? Защита приложения .NET
Joel Coehoorn 19 март 2010, в 17:10
Поделиться
Основная цель не предотвратить пиратство. Цель — не дать конкурентам прочитать мой код. Я знаю, что они сделают, они уже сделали.
Источник: overcoder.net
Защитить программу на С++ от декомпиляции
Я использую Microsoft Visual С++ 2010 Express для написания своих программ. Когда я хочу распространять свою программу, я компилирую ее с конфигурацией “Release”, а также устанавливаю, что компоновщик не добавляет отладочную информацию. Поэтому мой вопрос: безопасен ли мой исполняемый файл или кто-нибудь может его декомпилировать и посмотреть исходный код? Если это небезопасно, как я могу предотвратить его декомпиляцию?
Лучший ответ:
Все программы могут быть декомпилированы до степени. Однако большая часть полезной информации в исходном коде удаляется во время компиляции. Исходный код, создаваемый декомпилятором, – это бледное подражание оригиналу.
Имена переменных, имена функций, имена классов и т.д. не будут доступны после декомпиляции. Поэтому лучшее, что может сделать декомпилятор, – это превратить ваши функции, которые выглядят так:
double CalculateWidgetStrength(int WidgetType, int WidgetFrobishness);
в довольно бессмысленный код, подобный этому:
double Function85(int p1, int p2);
И даже выполнение этого очень точно может быть очень трудным для декомпилятора.
Может ли кто-нибудь декомпилировать его, чтобы увидеть исходный код? Скорее всего, но исходный код не так важен. Например:
int x = 1 — 1;
int x = 0;
будет эквивалентен в двоичных файлах, но это не имеет большого значения, не так ли?
Для достаточно большого проекта декомпиляция на самом деле не вызывает беспокойства, потому что вы действительно не можете использовать сгенерированный код. Требуются годы, чтобы узнать даже небольшую часть крупномасштабного проекта, принимая во внимание, что вы получаете выгоду от передачи знаний, документации и правильного наименования. Я предполагаю, что это невозможно с декомпилятором.
Для конкретных функций, да, я представляю себе риск, но тот, который не может быть полностью, на 100% выведен.
Единственный способ сохранить его “безопасным” в том смысле, в котором вы подразумеваете, – это не развернуть его, т.е. вы выполняете веб-службу или некоторые из них.
Вы не можете сделать это безопасным от людей, выполняющих его, не сделав невозможным их выполнение.
Учитывая то, что вы уже сделали, декомпиляция потребует значительных усилий, мой вопрос будет. Зачем кому-то беспокоиться, поскольку это, вероятно, потребует больше усилий, чем просто “сворачивание собственных”.
Вы не можете полностью защитить код.
ИМХО время, затрачиваемое на защиту вашего кода, лучше потрачено на то, чтобы сделать вашу функцию продукта богатой и без ошибок, а затем частые релизы. Создание кода, запутанного тем или иным способом, может затруднить поиск ошибок, которые очень трудно исправить.
Источник: techarks.ru