Есть ли способ, чтобы Reflector не мог отражать мой исходный код? - PullRequest
7 голосов
/ 15 декабря 2008

Есть ли способ (надежный и желательно не коммерческий) для предотвращения отражения отражателем моего исходного кода в Reflector ???

Спасибо, Adi

Ответы [ 9 ]

5 голосов
/ 15 декабря 2008

Нет. Reflector смотрит на вашу сборку так же, как во время выполнения .NET, чтобы генерировать собственный код для выполнения. Лучшее, на что вы могли бы надеяться, это запутать ваш код и сделать его (несколько) труднее для понимания читателем.

Некоторые плюсы и минусы выполнения обфускации можно найти на Стоит ли запутывать коммерческое приложение .Net?

4 голосов
/ 15 декабря 2008

Нет способа предотвратить декомпиляцию кода .net, при этом хороший обфускатор затруднит чтение отраженного кода, некоторые из них, например dotfuscator, не дадут отражателю отображать код C #; тем не менее, вы всегда сможете увидеть IL.

Одна из опций в Dotfuscator - использовать непечатаемые имена (Reflect on отражатель). Это очень усложняет декомпиляцию IMHO.

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

http://msdn.microsoft.com/en-us/slps/default.aspx

1 голос
/ 15 декабря 2008

попробуй dotfuscator. 2005/2008 выпускается с выпуском сообщества. В противном случае ре-архитектура вашего кода (болезненно), то есть ATL / COM-объекты (частные), вызываемые компонентами .NET (общедоступные).

Выбор за вами.

0 голосов
/ 29 сентября 2014

При желании вы можете загрузить приложение .Net с помощью собственного приложения C ++. Затем вы можете запутать и зашифровать все ваши файлы .net dll.

Используйте приложение bootstrap c ++ для дешифрования всех ваших файлов в байтовые массивы на основе памяти (точные копии их физического я).

Я сделал так, чтобы все мои файлы .net были в одном зашифрованном файле с расширением .DAT. Код C ++ захватывает файлы в отображенные в память файлы, а затем использует API-интерфейс хостинга CLR, чтобы превратить мое приложение Native C ++ в приложение .net, которое я затем использую load, используя

Assembly.Load (байт [] ...)

Так что в моем приложении я избегал создания .net EXE и сделал свое приложение C ++ EXE-файлом, чтобы все мои формы, элементы управления и т. Д. Находились в .Net Dll.

0 голосов
/ 11 августа 2011

Reflector не использует Reflection для отображения вашего исходного кода. Для этого используются метаданные .Net (в общеизвестном опубликованном формате).

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

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я работаю на программное обеспечение LogicNP, разработчики Crypto Obfuscator

0 голосов
/ 27 июля 2011

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не работаю на RedGate создателей SmartAssembly. Я просто очень довольный клиент, который нашел хорошее и доступное решение.

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

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

Если вы поставляете коммерческое приложение, имеет смысл потратить деньги на приличный обфускатор. Неправильный выбор может поставить под угрозу вашу интеллектуальную собственность или, что еще хуже, привести к дням отвратительной отладки. Сколько это будет стоить по сравнению с SmartAssembly?

0 голосов
/ 10 июля 2009

Xheo Codeveil также является отличным продуктом. У них также есть решение по лицензированию (для создания серийных номеров и т. Д., А затем активация через ваш собственный сервер активации0

0 голосов
/ 10 июля 2009

Не так давно был хитрость Антиблика, которая была эффективной, потому что .NET рефлектор не смог перевести одну конкретную инструкцию IL в код на c #, но они выпустили патч, и веселье закончилось.

0 голосов
/ 15 декабря 2008

Если вы ищете хороший Обфускатор, попробуйте RemoteSoft .

...