Защита

Тема в разделе ".NET", создана пользователем shm, 30 сен 2005.

Статус темы:
Закрыта.
  1. shm

    shm Гость

    Народ, кто-нибудь занимался вопросами защиты под C# от взлома и копирования? Что-то в инете мало чего по этой теме. Под не-Framework - навалом. У нас используется электронный ключ, только вот скомпилированный код C# он не хочет защищать. Какие-то свои вставки в код можно сделать, только вот найти их в C# коде - как два байта...
    Обфускторы не предлагать - знаю :) Что еще есть?
     
  2. avgalex

    avgalex Гость

    ИМХО ничего.
     
  3. shm

    shm Гость

    Ну да?! Так что, все, кто пишет сейчас standalone-приложения на C#, работают задарма??
    Подойдем с другой стороны - что можно сделать, чтобы максимально затруднить использование отладчиков?
     
  4. Guest

    Guest Гость

    Сначала скажу, что я вообще .Net не использую пока, поэтому мои выводы чисто теоретические.
    1. Практически да - те кто пишет на .NET, работают задарма, как ты говоришь. Сегодня нет еще нормальной навесной защиты.
    2. В сврусе есть человек, Victor Victorov, 9Rays.Net. Они активно над этим работают, можешь с ним связаться, пообщаться. Есть у них и очень сильный (вроде) обфускатор.
    3. Давно, в самом начале разговоров про защиту в .NET обсуждался такой подход - из зашифрованных ресурсов в динамике создается в памяти сборка, из которой запускается код. Если это возможно, то имхо этого достаточно для вполне нормальной защиты. Однако больше я об этом не слышал - возможно что-то поменяли в базе, так что такой трюк невозможен.
     
  5. eisernWolf

    eisernWolf Гость

    >>Практически да - те кто пишет на .NET, работают задарма, как ты говоришь. Сегодня нет еще нормальной навесной защиты.

    Ты хотя бы представляешь себе какой оборот нынче приняла разработка компонентов под .NET?

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

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

    P.S. Лучший способ защитить программу - это приложить к ней исходный код. .NET Framework делает это за вас :) Важно понять, что далеко не всем хочется ломать каждый новый релиз и разбираться в 40.000 строках и 200 классах. Гораздо проще купить годовую подписку и заработать куда больше денег купленным инструментом.

    >>что можно сделать, чтобы максимально затруднить использование отладчиков?

    Зачем? Ну сломает человек защиту, и что дальше? Я, например, не стану покупать краденный автомобиль (хоть и знаю где это сделать), а лучше пойду в магазин и совершенно законо получу техпаспорт на руки. Покупают даже в России. Причем не плохо. Проверено :)
     
  6. Guest

    Guest Гость

    <!--QuoteBegin-eisernWolf+14:10:2005, 04:13 -->
    <span class="vbquote">(eisernWolf @ 14:10:2005, 04:13 )</span><!--QuoteEBegin-->Ты хотя бы представляешь себе какой оборот нынче приняла разработка компонентов под .NET?[/quote]

    Вполне, а какое это отношение имеет к защите? Я же подчеркнул, что лично я не считаю почти открытые коды признаком "работы в пустую" - я цитировал автора вопроса.

    <!--QuoteBegin-eisernWolf+14:10:2005, 04:13 -->
    <span class="vbquote">(eisernWolf @ 14:10:2005, 04:13 )</span><!--QuoteEBegin-->А я лоадер напишу.[/quote]

    Успехов. Твой лоадер будет ломать без ключа секцию кода, защищенную RSA?

    <!--QuoteBegin-eisernWolf+14:10:2005, 04:13 -->
    <span class="vbquote">(eisernWolf @ 14:10:2005, 04:13 )</span><!--QuoteEBegin-->Важно понять, что далеко не всем хочется ломать каждый новый релиз и разбираться в 40.000 строках и 200 классах.[/quote]

    А кто спорит? Это просто разные рынки. Полагаю, автор вопрос задавал из той же области, где работаю я - небольшие приложения для конечного пользователя. Здесь защита имеет некоторое (хотя и небольшое) значение для продаж.
     
  7. Guest_

    Guest_ Гость

    Я написал прогу! :)
    1. Обфускатор имен типов, методов, параметров.
    2. Удаляет приватные enum-ы.
    3. Обфускатор IL кода.
    4. Частичный компилятор его в ASM (естественно, не все инструкции IL можно откомпилить).
    5. Система привязки к железу.
    6. + окончательный этап - разбавление кода мусором и антиатладочными конструкциями.
    Один "-" - система привязки к железу требует, чтоб у пользователя всегда был инет. Хотя ее можно не юзать.

    На входе - .NET exe-файл (пока только exe)
    На выходе:
    1 exe .NET файл (огрызок от .NET exe)
    1 dll native файл (что удалось скомпилировать)
    Или, при использовании системы online-активации с привязкой к железу
    1 exe .NET файл (активатор)
    1 dll .NET файл (огрызок от .NET exe)
    1 dll native файл (что удалось скомпилировать)

    Собсна, продавать ее рано. А вот тестировать можно.

    stalkerdoom на yandex точка ру
     
  8. karlito

    karlito Гость

    Смешно. А как насчёт 'сборки мусора'? Не думал?
    И вообще смысла не вижу в таких программах? Неуправляемый код тоже можно раскрыть.

    Защищённое приложение можно написать на .net. Защита приложения не кроется в основном в доступности исходного кода.

    На примере. Хотел я как то посмотреть код самого рефлектора. Получилось, как выдумаете? Мало того что ядро в виде сборки хранят в ресурсах(которое пришлось выгрузить при определённых усилиях на диск) и загружают его динамически в память при загрузке всего приложения, так ещё я так и не смог разобраться примерно в 300 классах которые называются _1, _2, _3, ... _500 и методах _1, _2...
    Конечно при определённых усилиях ( на глаз примерно год) можно востанновить весь исходный код. Вопрос будет ли желание у взламывателя потратить столько времени?
     
  9. ][tiger

    ][tiger Гость

    Вообще говоря, есть платные решения. Насколько они эффективны - я без понятия.

    http://www.desaware.com/products/licensingsystem/index.aspx - desaware licensing system
    http://www.dotnetlicensing.com/ - xheo licensing

    Есть обфускаторы. 9rays - известный.

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

    До сих пор вспоминаю историю с раром. Запаковал я кое-что в рар и отправил в буржуландию своему русскоязычному менеджеру. А он мне - я еще рар не купил, ты перезипуй. А что уже говорить про местных.
     
  10. spacelight

    spacelight Гость

    >Смешно. А как насчёт 'сборки мусора'? Не думал?
    >И вообще смысла не вижу в таких программах? Неуправляемый код тоже можно раскрыть.

    >Защищённое приложение можно написать на .net. Защита приложения не кроется в основном в >доступности исходного кода.

    Сборка мусора выполняется .net framework-ом.
    Происходит только частичная компиляция. Около 5% IL-инструкций.
    Вызов откомпиленных кусков - из native DLL.
    Эти куски подвергнуты метаморфным и полиморфным преобразованиям.
    И перемешаны с кодом проверки соответствия железа активационному коду.
    Причем эти проверке неявные.
    Поверх я юзаю еще и EXECryptor. (на всякий случай)
    Я этот протектор писал для себя.
    У меня покупатели - 75% нечестные люди.
    А защита уже полгода не взломана.
    Хотя на cracklab.ru ее 3 раза просили взломать.

    Кому интересно, могу показать. (защищенную прогу)
    Но не дам и не продам. (протектор)
     
  11. karlito

    karlito Гость

    Давай. Можешь на мыло выслать tttqqq@rambler.ru.

    Одним из вариантов защиты может быть следующий:
    - на машине клиента с помощью ngen.exe компилируем исходную сборку с IL кодом в сборку с машинным кодом
    - сборку с IL кодом удаляем
    - клиенты работают со сборкой с машинным кодом.

    Преимущества:
    - увеличение производительности (JIT компилятору не надо больше отрабатывать)
    - защита от дурачков (машинный код гораздо труднее декомпилировать)

    Недостатки:
    - увеличение сложности инсталляции
    - это всё таки не защищает от декомпиляции

    ВЗЛОМАТЬ МОЖНО ВСЁ, ЗАЩИТА ЗАВИСИТ ОТ ВРЕМЕНИ И СРЕДСТВ, КОТОРЫЕ НЕОБХОДИМО ПОТРАТИТЬ НА ВЗЛОМ.
     
  12. 62316e

    62316e Гость

    Хай. Может вопрос немного не втему но все же (те я новенький в .НЕТ): Можно как-то посмотреть то что CLR компилит в АСМ? И возможно ли ваще аля какой-то аля, нетоли компилятор чтоли, что бы с IL в Win32 , к примеру, "переганял"?
     
  13. Dr.Gigabit

    Dr.Gigabit Гость

    Можно. NGen.exe
     
  14. Real-Mulik

    Real-Mulik Гость

    тут походув тему вопросик есть. Как можно проследить собятие появления нового оборудования в системе? Например чтобя событие срабатывало на подключение флэшки. Подозреваю что делается этот с помощью классов в System.Management, одноко какой именно класс за это отвечает - не могу найти.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей