да, представляю. в одном из следующих постов собираюсь заодно произвести замеры производительности.
не думайте, что я так люблю обфускацию. просто меня заинтересовал данный вопрос, ну и деобфускация тоже.
решил привести свои мысли в порядок, всё записал, а накопилось аж на статью, вот решил поделиться ;)
да, ваш софт тогда никто не купит ;)
теоретически можно сделать вирт.машину для функций проверки лицензии, но и имеющейся защиты достаточно. не секреты пентагона же защищаем ;)
а абсолютной защиты всё равно не бывает, если программа как-то выполняется, её всё равно можно реверсить, даже если не скопировать код, то понять что и зачем можно при любой защите.
можно. и используется. но это уже пакеры (будут рассмотрены в самом конце).
к тому же в .NET нет больших возможностей по модификации кода + в силу специфики платформы IL-код всё равно нужен, так что любой упаковщик снимается легко и непринуждённо.
Большинство обфускаторов выдаёт маппинг новых имён на старые.
И для самых популярных существуют stack decoder’ы, чтобы не заглядывать в маппинг вручную.
может. может ещё много чего отвалиться (всё что зависит от Reflection).
но некоторые обфускаторы прилагают все усилия, чтобы задетектировать такие ситуации, и либо «подложить соломку», либо не обфусцировать данные части программы.
c оформлением у меня возникла проблема, картинки которые сейчас по правому краю, выстраивались в «лесенку». А тег <hr /> почему-то не распознавался хабром, пришлось вставить таблицы…
У нас на одном из сайтов тоже касперский увидел «вирус» в минимизированном js. И ещё avira. Отписали в техподдержку и тех и других, они исправили у себя сигнатуры.
Да, есть такая проблема… Хотя если оценивать будут мои посты, а не меня самого, то это не страшно ;)
Пока что «за» и «против» примерно равное количество.
Да, кстати, не все они деньги гребут ;)
babel — конкурентноспособный обфускатор, выложенный по GPL
а phoenix — вообще «учебный» проект (в одном из своих постов Pistelli именно так о нём и говорил)
На самом деле насчёт защиты по серийным номерам и похожих вещей вы правы.
[спойлер] На данный момент основной целью применения обфускаторов я вижу защиту от такого:
Вы выпустили на свет программу, которая содержит какой-то код, который не так легко написать с нуля.
А ваш конкурент взял рефлектор, скопировал сорцы, отрефакторил, поменял внешний вид, и выпустил аналогичный продукт практически не затратив денег (или других ресурсов) на разработку.
не думайте, что я так люблю обфускацию. просто меня заинтересовал данный вопрос, ну и деобфускация тоже.
решил привести свои мысли в порядок, всё записал, а накопилось аж на статью, вот решил поделиться ;)
для нативного кода это уже довольно старая практика и машины уже оптимизированы.
я имел в виду именно виртуализованный managed-код
теоретически можно сделать вирт.машину для функций проверки лицензии, но и имеющейся защиты достаточно. не секреты пентагона же защищаем ;)
а абсолютной защиты всё равно не бывает, если программа как-то выполняется, её всё равно можно реверсить, даже если не скопировать код, то понять что и зачем можно при любой защите.
к тому же в .NET нет больших возможностей по модификации кода + в силу специфики платформы IL-код всё равно нужен, так что любой упаковщик снимается легко и непринуждённо.
И для самых популярных существуют stack decoder’ы, чтобы не заглядывать в маппинг вручную.
но некоторые обфускаторы прилагают все усилия, чтобы задетектировать такие ситуации, и либо «подложить соломку», либо не обфусцировать данные части программы.
и потом пользоваться результатом?
Пока что «за» и «против» примерно равное количество.
babel — конкурентноспособный обфускатор, выложенный по GPL
а phoenix — вообще «учебный» проект (в одном из своих постов Pistelli именно так о нём и говорил)
На самом деле насчёт защиты по серийным номерам и похожих вещей вы правы.
[спойлер] На данный момент основной целью применения обфускаторов я вижу защиту от такого:
Вы выпустили на свет программу, которая содержит какой-то код, который не так легко написать с нуля.
А ваш конкурент взял рефлектор, скопировал сорцы, отрефакторил, поменял внешний вид, и выпустил аналогичный продукт практически не затратив денег (или других ресурсов) на разработку.