Вопрос ΠΎ Ρ‚ΠΎΠΌ, Π΅ΡΡ‚ΡŒ Π»ΠΈ config Π²Π½ΡƒΡ‚Ρ€ΠΈ APK-Ρ„Π°ΠΉΠ»Π°, часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², тСстировщиков ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΡ‹Ρ‚Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ прилоТСния. ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚ β€” Π΄Π°, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, Π½ΠΎ ΠΎΠ½ΠΈ Ρ€Π΅Π΄ΠΊΠΎ Π»Π΅ΠΆΠ°Ρ‚ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ понятного Ρ„Π°ΠΉΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ config.txt ΠΈΠ»ΠΈ settings.json Π² ΠΊΠΎΡ€Π½Π΅ Π°Ρ€Ρ…ΠΈΠ²Π°. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Android-ΠΏΠ°ΠΊΠ΅Ρ‚Π° спроСктирована Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ рСсурсов ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ случайных ΠΈΠ»ΠΈ Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ПониманиС Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ хранятся настройки, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ знания Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Android Package. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ разбросана ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ дирСкториям: ΠΎΡ‚ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… XML-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² рСсурсах Π΄ΠΎ Ρ…Π°Ρ€Π΄ΠΊΠΎΠ΄Π° Π² классах BuildConfig ΠΈΠ»ΠΈ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… строк Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ выносятся Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр ΠΈ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ динамичСски, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ поиск бСссмыслСнным Π±Π΅Π· внСдрСния Π² сСтСвой Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΊΠ°ΠΊ устроСно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ APK, ΠΊΠ°ΠΊΠΈΠ΅ инструмСнты ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π΄ΠΎ скрытых ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΊΠ°ΠΊ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ настройки ΠΎΡ‚ систСмных констант. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ прямой поиск тСкста Π² Ρ„Π°ΠΉΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ дСкомпиляции ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивными для Π°Π½Π°Π»ΠΈΠ·Π° структуры ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

АрхитСктура хранСния настроСк Π²Π½ΡƒΡ‚Ρ€ΠΈ APK

Π€Π°ΠΉΠ» APK ΠΏΠΎ своСй сути являСтся ZIP-Π°Ρ€Ρ…ΠΈΠ²ΠΎΠΌ, содСрТащим ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, рСсурсы ΠΈ манифСст. Когда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ создаСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ XML для описания интСрфСйсов, строк ΠΈ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ для нас, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Однако ΠΏΡ€ΠΈ сборкС Ρ€Π΅Π»ΠΈΠ·Π½ΠΎΠΉ вСрсии эти Ρ„Π°ΠΉΠ»Ρ‹ проходят процСсс компиляции Π² Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ARSN (Android Resource), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ читаСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ тСкстовым Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ мСстом, Π³Π΄Π΅ Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡ‰ΡƒΡ‚ config, являСтся ΠΏΠ°ΠΏΠΊΠ° res/values. ИмСнно здСсь ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Ρ„Π°ΠΉΠ»Ρ‹ Π²Ρ€ΠΎΠ΄Π΅ configs.xml, bools.xml ΠΈΠ»ΠΈ strings.xml, содСрТащиС Ρ„Π»Π°Π³ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, URL-адрСса сСрвСров ΠΈΠ»ΠΈ вСрсии API. Однако Π²compiled-Π²ΠΈΠ΄Π΅ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ для ΠΈΡ… чтСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ дизассСмблСр ΠΈΠ»ΠΈ дСкомпилятор, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ JADX ΠΈΠ»ΠΈ Apktool.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΡΠΌΠΎΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… XML-Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ APK Π±Π΅Π· ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ пСрСкомпиляции ΠΈ пСрСподписания ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ нСвозмоТности установки прилоТСния ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹Π»Π΅Ρ‚Ρƒ ΠΏΡ€ΠΈ запускС.

ΠšΡ€ΠΎΠΌΠ΅ рСсурсов, критичСски Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ часто ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² классС BuildConfig, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ гСнСрируСтся автоматичСски ΠΏΡ€ΠΈ сборкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎΡ‚ класс содСрТит константы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ DEBUG, APPLICATION_ID ΠΈΠ»ΠΈ кастомныС Ρ„Π»Π°Π³ΠΈ, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² build.gradle. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… "Π½Π° Π»Π΅Ρ‚Ρƒ" Π² ΡƒΠΆΠ΅ собранном APK ΠΊΡ€Π°ΠΉΠ½Π΅ слоТно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ нСпосрСдствСнно Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Dex.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ config Π½Π΅ всСгда Π² XML?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто прячут Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (ΠΊΠ»ΡŽΡ‡ΠΈ API, адрСса сСрвСров) Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (.so Ρ„Π°ΠΉΠ»ΠΎΠ²) ΠΈΠ»ΠΈ ΡˆΠΈΡ„Ρ€ΡƒΡŽΡ‚ ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ рСвСрс-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях простой поиск ΠΏΠΎ тСксту Π² Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ поиска ΠΈ извлСчСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π½ΡƒΠΆΠ½Ρ‹ΠΉ config Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ провСсти ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ распаковки ΠΈ дСкомпиляции. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ³ΠΎ открытия APK ΠΊΠ°ΠΊ Π°Ρ€Ρ…ΠΈΠ²Π° нСдостаточно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ лишь Π²Π΅Ρ€Ρ…ΡƒΡˆΠΊΡƒ айсбСрга. НаиболСС эффСктивным способом являСтся использованиС связки инструмСнтов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ Java ΠΈΠ»ΠΈ Smali, Π° Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ рСсурсы β€” Π² XML.

Одним ΠΈΠ· самых популярных инструмСнтов являСтся JADX, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ прилоТСния Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ интСрфСйсС. Π’ Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ поиском ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словам: "config", "setting", "url", "api_key". Часто Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ нСстандартно, поэтому поиск ΠΏΠΎ содСрТимому (Full Text Search) Π΄Π°Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Ρ‡Π΅ΠΌζ΅θ§ˆΠ΅Π½ΠΈΠ΅ структуры ΠΏΠ°ΠΏΠΎΠΊ.

  • πŸ” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Apktool для ΠΏΠΎΠ»Π½ΠΎΠΉ распаковки рСсурсов ΠΈ получСния Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Ρ… XML-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ res.
  • πŸ’» ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ JADX-GUI для Π°Π½Π°Π»ΠΈΠ·Π° Π»ΠΎΠ³ΠΈΠΊΠΈ прилоТСния ΠΈ поиска Ρ…Π°Ρ€Π΄ΠΊΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Java-ΠΊΠΎΠ΄Π΅.
  • πŸ“¦ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ assets Π²Π½ΡƒΡ‚Ρ€ΠΈ APK β€” Ρ‚Π°ΠΌ часто Π»Π΅ΠΆΠ°Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON ΠΈΠ»ΠΈ properties, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.
  • πŸ”Ž Π˜Ρ‰ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .dex Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ classes, Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ².

Если стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ Π΄Π°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π€Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .so, располоТСнныС Π² ΠΏΠ°ΠΏΠΊΠ΅ lib, ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π°ΡˆΠΈΡ‚Ρ‹Π΅ строки ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Для ΠΈΡ… Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ спСциализированныС инструмСнты, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ IDA Pro ΠΈΠ»ΠΈ Ghidra, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ процСссора.

πŸ“Š Какой инструмСнт Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для Π°Π½Π°Π»ΠΈΠ·Π° APK?
  • JADX
  • Apktool
  • Android Studio
  • Π”Ρ€ΡƒΠ³ΠΎΠΉ

Анализ Ρ„Π°ΠΉΠ»Π° AndroidManifest ΠΈ рСсурсов

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ сталкиваСтся систСма ΠΏΡ€ΠΈ установкС прилоТСния, являСтся AndroidManifest.xml. Π₯отя ΠΎΠ½ Ρ€Π΅Π΄ΠΊΠΎ содСрТит ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ настройки, Π² Π½Π΅ΠΌ прописаны ΠΌΠ΅Ρ‚Π°-Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π²Ρ…ΠΎΠ΄Π° для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π’Π΅Π³ΠΈ <meta-data> часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² SDK, ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈΠ»ΠΈ Ρ„Π»Π°Π³ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’Π½ΡƒΡ‚Ρ€ΠΈ манифСста ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ссылки Π½Π° рСсурсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ прилоТСния Π² Ρ€Π°Π·Π½Ρ‹Ρ… срСдах. НапримСр, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ android:value ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° boolean-Ρ„Π»Π°Π³, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΈΠ»ΠΈ Π½Π° строковый рСсурс с адрСсом сСрвСра. ПониманиС структуры манифСста ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ быстрСС ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ внСшниС зависимости ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ config ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

РСсурсы прилоТСния, хранящиСся Π² ΠΏΠ°ΠΏΠΊΠ΅ res, дСлятся Π½Π° мноТСство Ρ‚ΠΈΠΏΠΎΠ². Нас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ values (строки, Π±ΡƒΠ»Π΅Π²Ρ‹ значСния, Ρ†Π΅Π»Ρ‹Π΅ числа) ΠΈ xml (ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ XML-Ρ„Π°ΠΉΠ»Ρ‹). ИмСнно Π² послСдних часто хранятся слоТныС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ списки ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… устройств, ΠΊΠ°Ρ€Ρ‚Ρ‹ рСсурсов ΠΈΠ»ΠΈ настройки интСрфСйса.

Π’ΠΈΠΏ рСсурса РасполоТСниС Π² APK Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… Π’Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ наличия config
Strings res/values/strings.xml XML (Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ/тСкст) Высокая (URL, названия)
Bools res/values/bools.xml XML (true/false) БрСдняя (Ρ„Π»Π°Π³ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ)
Raw/Assets assets/ ΠΈΠ»ΠΈ res/raw/ JSON, XML, Properties ΠžΡ‡Π΅Π½ΡŒ высокая (ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ)
Meta-data AndroidManifest.xml XML Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ БрСдняя (ΠΊΠ»ΡŽΡ‡ΠΈ SDK)

ΠŸΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ рСсурсов стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ²Π΅Ρ€Π»Π΅Π΅Π² ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… рСсурсов. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (values-ru, values-en) ΠΈΠ»ΠΈ плотности экрана. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, найдя Ρ„Π°ΠΉΠ» config.xml Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΅Π³ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… дирСкториях с суффиксами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ.

πŸ’‘

ΠžΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, содСрТащими слова "debug", "release" ΠΈΠ»ΠΈ "flavor". Они часто содСрТат Ρ€Π°Π·Π½Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для Ρ€Π°Π·Π½Ρ‹Ρ… сборок прилоТСния.

Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ assets ΠΈ JSON ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ°ΠΏΠΊΠΈ res, содСрТимоС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ assets Π½Π΅ компилируСтся ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² рСсурсов. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ мСстом для хранСния config-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Ρ‚ΡƒΠ΄Π° Ρ„Π°ΠΉΠ»Ρ‹ config.json, settings.properties ΠΈΠ»ΠΈ Ρ†Π΅Π»Ρ‹Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ считываСт ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ хранСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² assets Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² простотС обновлСния (Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях) ΠΈ отсутствии нСобходимости Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… API для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΊΡ€ΠΎΠΌΠ΅ стандартного AssetManager. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти Ρ„Π°ΠΉΠ»Ρ‹ Π»Π΅ΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅ (послС распаковки APK), Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π½ΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ опасно Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.

Для извлСчСния Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² достаточно Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ APK Π»ΡŽΠ±Ρ‹ΠΌ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ assets. Если Ρ„Π°ΠΉΠ» ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ JSON, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π² любом тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прСдставляСт собой ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ являСтся Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ β€” Π΅Π³ΠΎ настройка.

{

"api_endpoint": "https://api.example.com/v2",

"enable_feature_x": true,

"max_retries": 3,

"timeout_ms": 5000

}

Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ цСлостности подписи APK. Π›ΡŽΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ содСрТимого Π°Ρ€Ρ…ΠΈΠ²Π° Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ подпись Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ цСлостности Π²Π½ΡƒΡ‚Ρ€ΠΈ самого прилоТСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ‚Ρ‡ΠΈΠ½Π³ Signature Π² ΠΊΠΎΠ΄Π΅).

ДинамичСская конфигурация ΠΈ сСрвСрныС настройки

БоврСмСнная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ всС Ρ‡Π°Ρ‰Π΅ ΠΎΡ‚Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚ хранСния статичСских настроСк Π²Π½ΡƒΡ‚Ρ€ΠΈ APK. ΠžΡ‚Π²Π΅Ρ‚ Π½Π° вопрос "Π΅ΡΡ‚ΡŒ Π»ΠΈ config Π² apk" ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ. Π’ этом случаС ΠΏΡ€ΠΈ стартС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ отправляСт запрос Π½Π° сСрвСр ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠ΅Π½ΡΡ‚ΡŒ адрСса сСрвСров ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ A/B тСстированиС Π±Π΅Π· нСобходимости Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ прилоТСния Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ°Π³Π°Π·ΠΈΠ½. Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ APK, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ лишь шаблоном ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ пСрСзаписан Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· сСти.

  • 🌐 Remote Config: БСрвисы Π²Ρ€ΠΎΠ΄Π΅ Firebase Remote Config ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ.
  • πŸ“‘ API Response: ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ запрос Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ запуска.
  • πŸ’Ύ Local Cache: ПослС получСния с сСрвСра, настройки ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² SharedPreferences ΠΈΠ»ΠΈ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° Ρ„Π°ΠΉΠ»ΠΎΠ² APK нСдостаточно. НСобходимо ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сниффСры Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Charles Proxy ΠΈΠ»ΠΈ Mitmproxy, установив ΠΈΡ… сСртификат Π½Π° устройство. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Анализ сСтСвого Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (SSL Pinning) Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… усилий ΠΏΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ Π² процСсс прилоТСния (Frida, Xposed) для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ бСзопасности.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ аспСкты рСдактирования ΠΈ бСзопасности

Если ваша Ρ†Π΅Π»ΡŒ β€” Π½Π΅ просто Π°Π½Π°Π»ΠΈΠ·, Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ повСдСния прилоТСния, Π²Π°ΠΌ прСдстоит ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ. НаличиС config Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅ β€” это Ρ€Π΅Π΄ΠΊΠΎΡΡ‚ΡŒ для коммСрчСских ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². Π§Π°Ρ‰Π΅ всСго Π²Π°ΠΌ придСтся ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Smali-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ, Π·Π°Π²ΠΈΡΡΡ‰ΡƒΡŽ ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выглядит Ρ‚Π°ΠΊ: дСкомпиляция APK, поиск Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ значСния ΠΈΠ»ΠΈ условия, внСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Smali ΠΈΠ»ΠΈ XML, сборка Π½ΠΎΠ²ΠΎΠ³ΠΎ APK, подпись ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΈ установка. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ этапС ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ошибки: ΠΎΡ‚ синтаксичСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ сборкС Π΄ΠΎ срабатывания checksum-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния.

β˜‘οΈ Π§Π΅ΠΊ-лист ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ APK

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΈ этичСскиС аспСкты ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‡ΡƒΠΆΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. ИзмСнСниС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ условия использования сСрвиса, Π° Π² случаС с ΠΏΠ»Π°Ρ‚Π½Ρ‹ΠΌΠΈ функциями β€” ΡΠ²Π»ΡΡ‚ΡŒΡΡ Π½Π΅Π·Π°ΠΊΠΎΠ½Π½Ρ‹ΠΌ. ВсСгда ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ экспСримСнты Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° прилоТСниях, ΠΏΡ€Π°Π²Π° Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Π²Π°ΠΌ, ΠΈΠ»ΠΈ Π² ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… цСлях Π½Π° тСстовых сборках.

πŸ’‘

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ прилоТСния зависит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько Π½Π°Π΄Π΅ΠΆΠ½ΠΎ скрыты ΠΈΠ»ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚β€œΠ΅Π»Π΅ΠΌ.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

МоТно Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ config Π² APK Π±Π΅Π· распаковки?

ВСхничСски, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ APK ΠΊΠ°ΠΊ ZIP-Π°Ρ€Ρ…ΠΈΠ² ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΏΠΊΠ΅ assets ΠΈΠ»ΠΈ res/raw Ρ‡Π΅Ρ€Π΅Π· тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Ссли ΠΎΠ½ΠΈ Π½Π΅ сТаты. Однако Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π² resources.arsc ΠΈ classes.dex Π±Π΅Π· дСкомпиляции ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π΅ удастся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ находятся Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

Π“Π΄Π΅ хранится config.xml Π² Android ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ?

Π€Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ config.xml Π½Π΅ являСтся стандартным для всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Если ΠΎΠ½ сущСствуСт, Ρ‚ΠΎ Ρ‡Π°Ρ‰Π΅ всСго располагаСтся Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΠ°ΠΏΠΊΠΈ assets ΠΈΠ»ΠΈ Π² res/xml. Π’ систСмных прилоТСниях Android ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ настройки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ разбросаны ΠΏΠΎ мноТСству Ρ„Π°ΠΉΠ»ΠΎΠ² Π² /system/etc ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ²Π΅Ρ€Π»Π΅Π΅Π².

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π»Π΅Ρ‚Π°Π΅Ρ‚ послС измСнСния config Ρ„Π°ΠΉΠ»Π°?

Π­Ρ‚ΠΎ происходит ΠΏΠΎ нСскольким ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ: Π½Π°Ρ€ΡƒΡˆΠ΅Π½Π° Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи APK, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° структура XML (синтаксичСская ошибка), ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ (anti-tamper), которая провСряСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ суммы Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΈ запускС.

Как ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ XML ΠΈΠ· APK Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅?

Для открытия Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… XML Ρ„Π°ΠΉΠ»ΠΎΠ² (ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ res) Π²Π°ΠΌ понадобятся инструмСнты Π²Ρ€ΠΎΠ΄Π΅ Apktool (для дСкодирования Π² Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ XML) ΠΈΠ»ΠΈ AXMLPrinter. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ Π½Π°Π±ΠΎΡ€ символов.