Pull to refresh

Comments 26

c оформлением у меня возникла проблема, картинки которые сейчас по правому краю, выстраивались в «лесенку». А тег <hr /> почему-то не распознавался хабром, пришлось вставить таблицы…
UFO just landed and posted this here
я ж правильно понимаю, что после обфускации может отвалиться DataBindings?
может. может ещё много чего отвалиться (всё что зависит от Reflection).
но некоторые обфускаторы прилагают все усилия, чтобы задетектировать такие ситуации, и либо «подложить соломку», либо не обфусцировать данные части программы.
да, и всё что живет на рефлекшине и именах отвалится если не сделать исключения на эти классы
Используете строковые литералы вместо expression trees? Так вам и надо. :)
хорошая, годная статья. От себя добавлю что есть способы превратить сборку в месиво из валидного ила, который уже никогда не декомпилировать в язык высокого уровня. Для этого надо писать собственный обфускатор, с заточками под свою архитектуру.
можно и так сделать. но я думаю, что тратить время на свой обфускатор стоит либо ради «теоретических изысканий» либо если программа ну очень ценная ;)
Обфускатор — это человек :))
У нас в компании работает несколько таких индивидов :)
p.s. эти таланты умеют передавать параметры между методами одного класса через ViewState, использовать Application как временную переменную, ну и напоследок создавать классы на 8000 строк, и с методами по 2000
Нда, люди на все тяжкие пойдут, чтобы не открывать код.
А есть у них возможность по «защифрованному» call-stack-у получить «правильный»?
Например у пользователя выскочила ошибка — он прислал CS — и у себя разработчик может его получить с правильными именами методами.
Большинство обфускаторов выдаёт маппинг новых имён на старые.
И для самых популярных существуют stack decoder’ы, чтобы не заглядывать в маппинг вручную.
Как-то уж слишком просто. Неужто не используются (нельзя использовать) аналоги классических алгоритмов, применяющихся для PE программ — защиты импорта, динамической модификаций кода, виртуальными машинами...?
можно. и используется. но это уже пакеры (будут рассмотрены в самом конце).
к тому же в .NET нет больших возможностей по модификации кода + в силу специфики платформы IL-код всё равно нужен, так что любой упаковщик снимается легко и непринуждённо.
Ну виртуальную машину-то поверх всё равно можно нагородить :) Хотя тормозить будет нещадно, наверное.
да, ваш софт тогда никто не купит ;)
теоретически можно сделать вирт.машину для функций проверки лицензии, но и имеющейся защиты достаточно. не секреты пентагона же защищаем ;)

а абсолютной защиты всё равно не бывает, если программа как-то выполняется, её всё равно можно реверсить, даже если не скопировать код, то понять что и зачем можно при любой защите.
Хм. А что, никто не покупает софт, защищённый, например, ASProtect'ом?
Речь, как и всегда в этой области, не про абсолютную защиту, а про увеличение стоимости/сложности взлома. Реверсить, конечно, можно всё, но людей, которые смогут (и будут) такое сделать, будет разное количество в зависимости от степени защиты.
ну аспротект не делает же виртмашину на дотнете/jav'e ;)
для нативного кода это уже довольно старая практика и машины уже оптимизированы.

я имел в виду именно виртуализованный managed-код
Подозреваю, что вм поверх другой вм с jit-компиляцией будет не намного медленнее, чем просто вм без jit. А последние вполне так существуют, и ничего — например, python без psyco/pypy. Сама по себе скорость выполнения программы становится всё меньше и меньше важной… Ну и плюс, как вы упомянули, не обязательно всё приложение защищать, можно и частично.
А представляете как сложно AOT транслятору преобразовать хорошенько обфусцированную (со вставками, заменами) программу в быстрый машинный код? В особо сложных случаях это вообще невозможно и поэтому очень тормозииит.
да, представляю. в одном из следующих постов собираюсь заодно произвести замеры производительности.

не думайте, что я так люблю обфускацию. просто меня заинтересовал данный вопрос, ну и деобфускация тоже.
решил привести свои мысли в порядок, всё записал, а накопилось аж на статью, вот решил поделиться ;)
Огромное спасибо за статьи, очень интересно!
Sign up to leave a comment.

Articles