Когда код специально запутывают так, чтобы было непонятно, как он работает Ситуация: вы написали уникальный алгоритм обработки текста, который подсказывает пользователю, как грамотно что-то написать (например, письмо клиенту или коммерческое предложение). Этот код исполняется прямо на клиенте, в виде JS-библиотеки. Вы хотите продавать доступ к этому сервису. Проблемы: Как только один пользователь получил доступ к этому коду, он может заглянуть в него, понять принцип действия и создать такой же сервис самостоятельно...
Обфускация кода Android приложения Обфускация кода — это процесс, направленный на усложнение понимания и анализа исходного кода или исполняемого файла без изменения его функциональности. В контексте Android-приложений, обфускация помогает защитить интеллектуальную собственность и усложнить реверс-инжиниринг, делая код более сложным для чтения и анализа. Для обфускации Android APK-файлов использую модульный и легко расширяемый инструмент - Obfuscapk. Каждый обфускатор является плагином, который наследуется от абстрактного базового класса и должен реализовать метод obfuscate. Когда инструмент начинает обработку нового файла Android-приложения, он создает объект обфускации для хранения всей необходимой информации (например, местоположение декомпилированного кода smali) и внутреннего состояния операций (например, список уже использованных обфускаторов). Затем этот объект передается в качестве параметра методу obfuscate всех активных плагинов/обфускаторов (последовательно) для обработки и модификации. Список и порядок активных плагинов указывается через параметры командной строки. Obfuscapk легко расширяется новыми обфускаторами: достаточно добавить исходный код, реализующий технику обфускации, и метаданные плагина (файл .obfuscator) в директорию src/obfuscapk/obfuscators. Инструмент можно установить из исходников: git clone https://github.com/Mobile-IoT-Security-Lab/Obfuscapk.git Для работы потребуется установить библиотеки: apktool, apksigner и zipalign. Удобнее использовать docker: docker pull claudiugeorgiu/obfuscapk docker tag claudiugeorgiu/obfuscapk obfuscapk docker run --rm -it obfuscapk --help Пример запуска: sudo docker run --rm -it -u $(id -u):$(id -g) -v "${PWD}/input":"/workdir" obfuscapk -o Rebuild -o AdvancedReflection -o MethodOverload -o LibEncryption -o NewSignature -o ClassRename -o FieldRename -o MethodRename -o ResStringEncryption -o AssetEncryption -o ConstStringEncryption -o RandomManifest -o DebugRemoval -p "/workdir/app-clean.apk" Описание методов обфускации: - Rebuild: Пересборка с измененным манифестом; - LibEncryption: Шифрует библиотеки, используемые в приложении; - NewSignature: Cоздает новую подпись; - ClassRename: Переиминовывает классы; - FieldRename: Переименовывает поля классов; - MethodRename: Переименовывает методы; - ResStringEncryption: Шифрует строки в ресурсах APK. Это может затруднить анализ констант и строковых значений в приложении. - AssetEncryption: Шифрует файлы в директории assets; - ConstStringEncryption: Шифрует строковые константы в коде; - RandomManifest: Изменяет атрибуты в AndroidManifest.xml, что может затруднить анализ намерений и разрешений приложения; - DebugRemoval: Удаляет отладочную информацию из APK; - MethodOverload: используется для создания перегруженных методов, то есть методов с одинаковыми именами, но разными параметрами; - AdvancedReflection: изменяет имена методов и классов, чтобы затруднить анализаторам обнаружить их на этапе компиляции. Использование этих методов поможет усилить защиту Android-приложения и усложнить его анализ. #Dev