En
Проекты Вакансии Блог

Доработка безопасности приложения «ЮMoney» для Android

Участвовали в улучшении безопасности приложения ЮMoney для Android. 

Клиент

ЮMoney — российская финтех-компания, входящая в экосистему Сбера, лидер по выручке среди финтех-компаний за 2025 год по оценке Smart Ranking. Кошелёк ЮMoney позволяет оплачивать товары и услуги онлайн и офлайн, переводить деньги, оформлять виртуальные и пластиковые карты, получать кешбэк и собирать средства на различные цели. Для иностранных туристов предусмотрена специальная карта для безналичных платежей в России. 

Предпринимателям и компаниям доступна ЮKassa — сервис приёма платежей с поддержкой более десяти способов оплаты, выставлением счетов через мессенджеры автоматической отправкой чеков, быстрыми расчётами между юридическими лицами, разделением платежей и защитой от мошенничества.

Кроме того, компания развивает ЮSoft — платформу готовых финансовых модулей для встраивания в продукты партнёров.

Задача

Требовалось усилить механизмы обфускации и защиты кода для прохождения аудита безопасности. 

Решение

В ходе анализа готовых решений рассмотрели dProtect — открытое решение на базе ProGuard для шифрования и обфускации кода.

Однако использование dProtect потребовало бы миграции на современные версии Gradle (системы автоматической сборки проекта) и дальнейшей самостоятельной поддержки библиотеки, поэтому команда отказалась от этого варианта.

Платные решения также не подошли из-за высокой стоимости.

Было решено самостоятельно реализовать механизмы защиты, необходимые для прохождения аудита: шифрование ресурсных строк, добавление мусорного кода и создание собственного словаря обфускации.

Реализация

Написали плагин, который подключается к модулям, ресурсы которых требуют шифрования.

Плагин регистрирует две задачи EncryptStringsTask и DecryptStringsTask. Первая отвечает за шифрование, вторая — за расшифровку.

EncryptStringsTask запускается до выполнения Gradle-задачи preBuild, обходит все файлы strings.xml, расположенные в директории res, и шифрует их.

DecryptStringsTask  внедряет в приложение runtime-компонент, который управляет процессом расшифровки.

Кроме того, в рамках этой задачи регистрируется ClassVisitor. Он позволяет модифицировать байт-код (промежуточное представление программы) Java/Kotlin-классов во время компиляции и подменять стандартные методы получения строк на защищенные.

Добавление мусорного кода также реализовано с помощью ClassVisitor и модификации байт-кода в процессе компиляции. На этапе сборки в классы и методы добавляется бесполезный код, который усложняет анализ файла приложения как человеком, так и инструментами для реверс-инжиниринга — обратной разработки. 

Также был реализован собственный словарь обфускации, что позволило избежать шаблонных имен классов, возникающих при использовании стандартного словаря. Для этого написана Gradle-задача, которая генерирует случайные названия и сохраняет их в файл. Этот файл подключается в proguard-rules.pro с помощью команд -obfuscationdictionary, -classobfuscationdictionary и -packageobfuscationdictionary. После этого R8 начинает использовать его в качестве словаря для обфускации имен классов, методов, полей и пакетов.

Результат

Разработан плагин для шифрования ресурсных строк и добавления мусорного кода, а также создан собственный словарь обфускации. Выполненные доработки позволили заказчику успешно пройти сертификацию.

Бизнес-эффект

  1. Успешное прохождение аудита и сертификации приложения

  2. Существенное повышение устойчивости приложения к реверс-инжинирингу

  3. Защита интеллектуальной собственности и бизнес-логики

  4. Сохранение работоспособности приложения при усиленной защите

Технологии

Библиотеки: org.ow2.asm:asm, com.android.tools.build:gradle-api.


Заполните чек-лист и получите консультацию, как сократить расходы на борьбу с мошенничеством на 50%!
Узнать подробнее
snippet
Другие работы
Разработка цифрового продукта для российского банка
Создание приложения управления сном для компании «Аскона»
Создание единой системы авторизации для крупной российской компании
Анализ процессов крупной производственной компании
Усиление команды по разработке системы управления грузоперевозками для компании «ТЕХНОНИКОЛЬ»
Автоматизация финансовой аналитики для «МК Лизинг»
Разработка корпоративного портала для обучения сотрудников крупной технологической компании
Разработка цифрового продукта для российского банка
Создание приложения управления сном для компании «Аскона»
Создание единой системы авторизации для крупной российской компании
Анализ процессов крупной производственной компании
Усиление команды по разработке системы управления грузоперевозками для компании «ТЕХНОНИКОЛЬ»
Автоматизация финансовой аналитики для «МК Лизинг»
Разработка корпоративного портала для обучения сотрудников крупной технологической компании
Оставьте заявку на проект
Оставьте контакты, чтобы обсудить проект и условия сотрудничества, или позвоните: 8 800 200-99-24
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Написать нам
Оставьте контакты, чтобы обсудить проект и условия
сотрудничества, или позвоните: 8 800 200-99-24
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Оставьте свои контакты
SimbirSoft регулярно расширяет штат сотрудников.
Отправьте контакты, чтобы обсудить условия сотрудничества.
  • Python-paзработчик
  • Node.js-разработчик
  • Project-менеджер
  • Системный аналитик (финтех)
  • iOS-разработчик
  • React-разработчик
  • Golang-разработчик
  • 1С-аналитик
  • Data-инженер
  • C++-разработчик
  • DWH-аналитик
  • SRE-инженер
  • SDET Java
  • QA Fullstack Java/Kotlin
  • Бухгалтер по расчету заработной платы
  • Data Scientist/NLP-инженер
  • Java-разработчик
  • Специалист тендерного отдела
  • Системный аналитик ЦФТ
  • Сетевой инженер/системный аналитик
  • 1С-аналитик (ритейл)
  • SDET JS/TS
  • DevSecOps
Прикрепить резюме, до 10 Мб*
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Написать нам
Расскажите, какие задачи сейчас на вашем проекте.
Проконсультируем и предложим подходящих специалистов, а также сориентируем по ставкам на аутстаф.
Направление
Количество специалистов
Middle
TeamLead
Senior
TechLead
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Экспресс-консультация
Заполните все поля формы.
Эксперт свяжется с вами в течение рабочего дня.
Тематика
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Порекомендуйте друга — получите вознаграждение!
  • Python-paзработчик
  • Node.js-разработчик
  • Project-менеджер
  • Системный аналитик (финтех)
  • iOS-разработчик
  • React-разработчик
  • Golang-разработчик
  • 1С-аналитик
  • Data-инженер
  • C++-разработчик
  • DWH-аналитик
  • SRE-инженер
  • SDET Java
  • QA Fullstack Java/Kotlin
  • Бухгалтер по расчету заработной платы
  • Data Scientist/NLP-инженер
  • Java-разработчик
  • Специалист тендерного отдела
  • Системный аналитик ЦФТ
  • Сетевой инженер/системный аналитик
  • 1С-аналитик (ритейл)
  • SDET JS/TS
  • DevSecOps
Ваши данные
Данные кандидата
Прикрепить резюме, до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Отправить
Отправлено
Заказать демонстрацию
Оставьте контакты, чтобы обсудить проект и условия
сотрудничества, или позвоните: 8 800 200-99-24
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.