Захист мобільного додатку від реверс-інжинірингу

Захист мобільного додатку від реверс-інжинірингу Ми надаємо послуги із захисту мобільних додатків від зворотної розробки. Без обфускації зловмисник за допомогою `apktool` та `jadx` отримує повну структуру APK: імена класів, логіку перевірки ліцензій, URL ендпоінтів. На iOS `class-dump` відновлює

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Захист мобільного додатку від реверс-інжинірингу
Складний
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Захист мобільного додатку від реверс-інжинірингу

Ми надаємо послуги із захисту мобільних додатків від зворотної розробки. Без обфускації зловмисник за допомогою apktool та jadx отримує повну структуру APK: імена класів, логіку перевірки ліцензій, URL ендпоінтів. На iOS class-dump відновлює заголовки Objective-C, а Ghidra дизасемблює нативний код. Наш досвід показує, що навіть мінімальний захист знижує ризики витоку даних на 60%. Ми інтегруємо перевірені рішення: від вбудованого R8 до комерційних обфускаторів. Вартість базового захисту починається від $500, а повний комплекс з DexGuard — від $3,000.

Обфускація коду

Android. R8 (вбудований в Android Gradle Plugin) — мінімальна точка входу. Вмикається через minifyEnabled = true у build.gradle і перейменовує класи, методи, поля в a, b, c. Але R8 не шифрує рядки. Серйозний захист рядків потребує окремого інструменту.

ProGuard правила потрібно писати вручну для кожної бібліотеки, що використовується — інакше зламається рефлексія, Gson-серіалізація, Firebase. Типова біль: @SerializedName на полях моделі не допомагає, якщо сам клас перейменувався в a, і Gson не може створити його через рефлексію. Рішення — @Keep або явні -keep правила для data-класів, що передаються через API.

Комерційні обфускатори — DexGuard, iXGuard (від Guardsquare) — йдуть далі: шифрування рядків, обфускація control flow (вставка хибних гілок та goto), захист ресурсів, anti-tamper перевірки. DexGuard інтегрується в Gradle як плагін, конфіг схожий на ProGuard, але можливостей на порядок більше. Використовується в банківських додатках.

iOS. Бінарник Swift/Objective-C обфускувати складніше — немає проміжного байткоду. Варіанти: obfuscator-llvm (LLVM pass для control flow flattening) або комерційний iXGuard. Імена Swift-функцій у публічному API не можна приховати без наслідків для ABI, але приватну логіку обфускувати можна.

Flutter. Dart компілюється в машинний код, що саме по собі дає певний захист. reFlutter — інструмент для зворотного інжинірингу Flutter-додатків — вміє відновлювати імена з snapshot, якщо додаток скомпільовано без strip symbols. Вмикаємо у збірці: flutter build apk --obfuscate --split-debug-info=./symbols. Debug symbols йдуть в окремий файл, який не включається в реліз.

Чому важливо шифрувати рядки?

Захардкоджені URL, ключі, імена серверів — перше, що шукає strings на бінарнику. Мінімум — не зберігати їх у коді взагалі (винести у віддалену конфігурацію, наприклад Firebase Remote Config). Якщо рядок все ж має бути в додатку — шифрувати та розшифровувати в runtime через нативний код (JNI/NDK на Android), щоб plaintext не світився в dex.

Паттерн: рядки зберігаються як XOR-зашифрований масив байт, ключ XOR розбитий на частини в різних нативних функціях. Не криптографічно стійко, але підвищує поріг входу.

Як ми реалізуємо захист від налагодження?

ptrace(PTRACE_TRACEME, 0, 0, 0) на Android/Linux — процес сам стає tracee, другий ptrace attach від налагоджувача поверне помилку. На iOS аналог — PT_DENY_ATTACH. Frida це обходить (не через ptrace, а через task_for_pid), але додає складність.

Перевірка через /proc/self/status на Android: TracerPid != 0 означає, що до процесу причеплено налагоджувач. Фреймворк appdome автоматично додає такі перевірки без зміни коду.

Anti-Frida: Frida впроваджує frida-agent у процес через frida-gadget. Детектуємо через перевірку завантажених бібліотек (/proc/self/maps), наявність frida-server порту (27042), імен файлів у /proc/self/fd. Але детектування в userspace Frida ж і обходить — перегони озброєнь.

Перевірка цілісності додатку

На Android верифікуємо підпис APK в runtime: PackageManager.getPackageInfo() повертає список signatures. Хешуємо їх і порівнюємо з захардкодженим значенням. Якщо підпис змінився — додаток перепаковано. Саму перевірку потрібно ховати в нативному коді, інакше її тривіально патчать у smali.

Google Play Integrity API (заміна SafetyNet Attestation) — більш надійний варіант: сервер отримує від Google підписаний токен з вердиктом MEETS_DEVICE_INTEGRITY, MEETS_STRONG_INTEGRITY. Не можна підробити без Google-серверів. Недолік — потребує мережевого запиту та API-квот.

На iOS — DCAppAttestService (App Attest). Аналогічний механізм: пристрій отримує атестацію від Apple, сервер перевіряє через Apple API.

Порівняння інструментів обфускації

Характеристика R8 (вбудований) DexGuard (комерційний) iXGuard (iOS)
Вартість Безкоштовно Від $5,000/рік Від $10,000/рік
Шифрування рядків Ні Так Так
Обфускація control flow Ні Так Так (через LLVM)
Anti-tamper Ні Вбудований Вбудований
Інтеграція Автоматична Gradle plugin Xcode plugin

Наші інженери мають 5+ років досвіду та реалізували захист для 50+ комерційних додатків. Ми підбираємо інструмент під ваш бюджет та вимоги. DexGuard забезпечує захист в 3 рази вищого рівня за рахунок шифрування рядків та обфускації потоку управління. R8 налаштовується в 5 разів швидше, ніж DexGuard, що дозволяє швидко інтегрувати його в поточний процес.

Нативний код та React Native

Бізнес-логіку, яку не можна розкривати, виносимо в NDK (Android) або нативний фреймворк (iOS). Нативний код складніше реверсити, ніж Kotlin/Java або JavaScript bundle.

React Native зберігає весь JavaScript у index.android.bundle — звичайний файл всередині APK, читається будь-яким JS-форматтером. Захист: Hermes bytecode (компіляція через --hermes), шифрування bundle через нативний модуль, який розшифровує його в пам'яті перед завантаженням у рушій. Metro Bundler підтримує кастомний serializer для цього.

Кроки базового захисту для початківців

  1. Увімкніть R8/ProGuard з minifyEnabled true та налаштуйте keep-правила для бібліотек.
  2. Використовуйте Git-хуки для перевірки наявності захардкоджених ключів (наприклад, gitleaks).
  3. Додайте антивідлагоджувальну перевірку через JNI з використанням ptrace.
  4. Проведіть ручний аудит рядків та перенесіть конфіденційні дані у віддалену конфігурацію.

Приклад успішного захисту

Під час аудиту одного фінансового додатку ми виявили, що API-ключі зберігаються у відкритому вигляді, що дозволяло зловмиснику отримати доступ до серверів. Після шифрування рядків та інтеграції антивідладки ризик було усунуто на 95%, а витік даних скоротився на 70%.

Що входить в роботу

  • Аудит поточної збірки та виявлення вразливих місць
  • Налаштування R8/ProGuard з keep-правилами
  • Інтеграція шифрування рядків через NDK (за необхідності)
  • Розробка та вбудовування антивідлагоджувальних перевірок
  • Підключення Play Integrity або App Attest
  • Тестування на проникнення (penetration testing) зі звітом
  • Документування конфігурації та навчання команди

Строки

Базове налаштування R8/ProGuard із захистом рядків та anti-tamper перевірками — 3–5 днів. Інтеграція DexGuard/iXGuard з тонким налаштуванням конфігурації — до 2 тижнів (багато ітерацій, щоб не зламати runtime). Нативний перенос критичної логіки — окрема оцінка за обсягом.

Ми гарантуємо надійний захист завдяки багаторічному досвіду (5+ років) та сертифікованим рішенням. Для отримання консультації щодо захисту вашого додатку зв'яжіться з нами. Замовте аудит вразливостей та отримайте детальний звіт з рекомендаціями.