2009-09-21 4 views
2

Если пользователь знает почти что-либо о кодировании в .net, и они видят .dll, у них есть неудачная возможность вызвать ваши общедоступные функции и подпрограммы. Я знаю, что вы можете попробовать «ключевую» систему, где он будет проверять определенный «ключ» в качестве аргумента и только запускать код, если «ключ» действителен, но я просто запустил код и DLL, которые я и когда .dll бросил необработанное исключение, он показал мне содержимое файла.Можно ли использовать DLL для основной логики вашего приложения .NET?

Как защитить ваши .dlls? Если вы ставите только код, в котором вы готовы рисковать?

+2

Что-то еще, о чем нужно помнить: я не думаю, что вы можете «видеть код» для DLL в необработанном исключении, если DLL построена в режиме деблокирования, а PDB-файл отсутствует. –

+0

@Mark Rushakoff: сборка .NET может быть декомпилирована с использованием рефлектора ... –

+0

@Mitch Wheat: Согласовано, но платформа .NET не должна давать подробных сведений, если существует необработанное исключение, если DLL была построена таким образом. –

ответ

9

Nevermind вызывает существующие методы и т. Д. Reflector декомпилирует код!

Обфускация доставит вас до сих пор, но для защиты критического IP-адреса необходимо разместить его на защищенном сервере, которым вы управляете.

+0

Является ли рефлектор даже законным? – Cyclone

1

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

Вам необходимо изучить obfuscation .Net. Вот хороший пост от кого-то просят, по существу один и тот же вопрос, но в разных условиях:

.NET obfuscation tools/strategy

Edit - добавил

Вот хорошая статья по этому вопросу вы просите о.

http://aspnet.4guysfromrolla.com/demos/printPage.aspx?path=/articles/080404-1.aspx

И @Mitch Пшеница правильно. Обфускация доберет вас до сих пор. Но это начало. Если вы собираетесь перераспределять ваши dll, вам нужно привыкнуть к идее, что кто-то достаточно устойчив, чтобы взломать их.

+0

Будет ли это также запутывать функции и подпрограммы? – Cyclone

+0

Мне нужно будет посоветовать вам прочитать статью по второй ссылке, а не ответить на нее. Статья посвящена теме гораздо более четко, чем я могу, в нескольких сообщениях или ответах здесь, и кажется, что вам нужно взглянуть на основы темы. (без обид). – David

3

Помните, что нет никакой разницы между .NET DLL и EXE-файлом, когда дело доходит до возможности декомпилировать или повторно использовать в других приложениях.

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

Оба являются сборками, поэтому одинаково просто создавать экземпляры и использовать общедоступные типы в исполняемом файле, как это делается с сборкой DLL. (Например, в Visual Studio перейдите по ссылке «Добавить ссылку», «Обзор», а затем обратите внимание, что «exe» является допустимым компонентом для ссылки.)

Итак, вопрос действительно более общий: безопасно ли развертывать .NET. сборки любого типа для ваших клиентов? Как говорится в другом ответе, единственным гарантированным безопасным подходом является вовсе не развертывание, а сборка на вашем собственном сервере (например, разработка веб-приложения).

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

1

Небольшой вопрос

Является ли ваше приложение веб-приложение или C# (Windows Forms/командная строка) приложения.

Если это веб-приложение, вы можете поместить логику, которую вы хотите скрыть, в веб-сервисе, размещенном на каком-либо другом URL-адресе, недоступном для публики.

Также, если это приложение для Windows, вы все равно можете запутать dll. Но помните, вы можете сделать хакеров сложнее декомпилировать, но не невозможно. У меня также был аналогичный вопрос в приведенной ниже ссылке.

How to preventing decompilation of any C# application

Вы должны взвесить все преимущества декомпиляции над бизнесом-возвратами скрытия/оставив код, как это.

Надеюсь, это поможет.

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