Обфусцирование байт-кода Python через мутацию интерпретатора
На самом деле, Dropbox сделали это очень хорошо, они смогли защитить свое настольное приложение, сделанное на python; Я много исследовал это, но нет лучшего решения, чем запутывание, которое не очень безопасный способ, и вы в конечном итоге увидите, что ваш код куда-то загружен.
Я слушал сессиюДжованни Баджо (основатель PyInstaller), он сказал, что Dropbox делает это:
Скремблирование байт-кода путем перекомпиляции вашего CPython 'и, следовательно, стандартный интерпретатор CPython не сможет его запустить, только перекомпилированный интерпретатор cpython.Все, что вам нужно сделать, это перетасовать цифры ниже .I 'define loadup 8
мы никогда не проходили через Pythons исходный код, поэтому я не буду утверждать, что я полностью понимаю вышеупомянутые слова.
Мне нужно услышать голос экспертов: как это сделать? И если после перекомпиляции я смогу упаковать свое приложение, используя доступные инструменты, такие как PyInstaller?
Обновить:
Я провел некоторое исследование относительно того, как Dropbox делает этот тип запутывания / мутации, и нашел это:
В соответствии сХаген Фричони делают это в два этапа:
Они используют шифр TEA вместе с RNG, засеянным некоторыми значениями в объекте кода каждого модуля python. Они соответственно настроили переводчика так, чтобы он
а) Расшифровывает модули и
б) предотвращает доступ к дешифрованным кодовым объектам.
Это был бы простой путь, позволяющий dropbox все дешифровать и выгружать модули, используя встроенный маршаллер.
Другой используемый трюк - ручное шифрование кодов операций. К сожалению, это можно было исправить только полуавтоматически, поэтому их моноалфавитный шифр замещения оказался довольно эффективным с точки зрения выигрыша в течение некоторого времени.
Я все еще хочу узнать больше о том, как это можно сделать, более того, я неЯ не знаю, как расшифровка происходит в этом процессе ... Я хочу, чтобы все эксперты голос здесь ... простые парни, где ты.