Как декомпилировать и тематические Android APKs —

Вы когда-нибудь открывали приложение для Android, и вам не нравилась используемая им цветовая тема? Что, если вы хотите изменить белый фон в приложении, например, на черный? Сегодня я собираюсь показать вам, как декомпилировать файл .APK, чтобы вы могли редактировать файлы внутри, а затем перекомпилировать и установить его на свой телефон Android.

Замечания: Некоторые приложения сложнее для темы, чем другие. Например, общение с Facebook Messenger очень сложно для темы. Я расскажу вам об этом руководстве на примере приложения Dropbox, так как оно является одним из самых простых для редактирования.

Требования

  1. Notepad ++
  2. APKTool + последняя версия AAPT
  3. APKMulti Tool Script
  4. Фоторедактор, такой как Photoshop / GIMP
  5. [Необязательно] Dropbox .apk (для следования этому руководству)

Загрузите все необходимые инструменты и установите их на свой компьютер, включая test.apk, предоставленный выше. Dropbox — одно из самых простых приложений для темы, поэтому мы будем использовать его в этом руководстве.

Вам также следует перенести framework-res.apk со своего телефона на компьютер, он находится в / system / framework / на вашем внутреннем хранилище.

Перетащите APKTool и AAPT в папку «Прочее» внутри основного каталога APK Multi Tool.

Перетащите файл test.apk в папку «Place-apk-here-for-modding» в каталоге APK Multi Tool, и вас встретит командный терминал.

Нажмите любую клавишу для продолжения, и вы увидите меню терминала с кучей опций. Выберите опцию 24.

Вы вернетесь к главному экрану терминала, но «test.app» станет вашим проектом. Поэтому нажмите 9, чтобы декомпилировать apk, а затем нажмите 12, чтобы запустить тест-сборку. Это хорошая практика, чтобы увидеть, если что-то настроено неправильно. Если приложение собирается правильно, нажмите 2 и сверните отображаемый скрипт.

Поскольку тестовая сборка проверена, давайте погрузимся в редактирование XML-кода apk. Пожалуйста, следуйте внимательно.

Внутри извлеченной папки .apk перейдите в папку «res» и откройте «AndroidManifest.xml» с помощью Notepad ++. Теперь нажмите CTRL + F, чтобы найти следующую строку:

Android: фон

Используйте опцию «Найти все», и должно быть найдено около 190 строк. Так что теперь вам нужно пройтись по каждой выделенной строке, чтобы убедиться, что вы не пропустите ни одной, когда мы меняем цвет фона приложения.

Прокручивайте, пока не найдете «Camera_upload_grid.xml», который содержит строку «android: background =» @ * android: color / white ». Скопируйте всю строку и нажмите CTRL + H, чтобы всплыло диалоговое окно «Заменить». Вставьте строку в верхнюю и нижнюю строки, но нам нужно ее изменить.

В декомпилированной папке .apk перейдите в /res/values/colors.xml и откройте ее в Notepad ++. Ищите строку «abs__background_holo_dark», которая наиболее определенно является фоном. Итак, теперь скопируйте эту строку и вернитесь к первому XML-файлу, который мы открыли, с открытым окном Заменить, и в нижней строке вставьте только что скопированную строку. Итак, теперь вы должны иметь в нижней строке диалога Replace:

Android: фон =»@ цвет / abs__background_holo_dark

Теперь нажмите «Заменить все», и все @android: color / white будут заменены на background_holo_dark. Теперь продолжайте прокручивать весь .xml, ища любые строки android: background, которые используют шестнадцатеричное значение (#fffffff) или что-то другое, чем то, что мы только что заменили. Для тех, которые вы найдете, измените строки, чтобы использовать новую (abs__background_holo_dark).

Итак, мы изменили фон, теперь мы собираемся изменить цвет текста. Так что следуйте той же процедуре, которую мы только что сделали, но на этот раз сделайте CTRL + F для «android: textColor». Вы получите около 166 найденных строк.

Вы увидите такие вещи, как «android: textColor =» # ffbbbbbb »и т. Д. Так что снова загляните в Colors.xml, и нам нужно выяснить, какие строки заменить цветом текста.

Вы можете увидеть android: textColor = »# ffbbbbbb», «#ffffffff», «# ff717171» и «#ffcccccc» на скриншоте и в результатах поиска в Note ++. Снова откройте файл Colors.xml, чтобы найти строку, которую мы хотим использовать для цвета текста.

Итак, вернитесь к первому .xml и снова нажмите CTRL + H для диалога замены. Теперь скопируйте строку «android: textColor =» # ffbbbbbb »сверху и снизу и измените нижнюю строку на« android: textColor = »@ color / text».

Теперь еще раз выполните поиск по всем строкам android: textColor и измените все, что имеет шестнадцатеричное значение в строке. Наконец, когда вы попадаете в файл styles.xml, вы хотите удалить инверсию из нескольких строк, начиная со строки 260 и продолжая вниз в течение нескольких строк. Поэтому удалите «Inverse» из этих строк.

Далее вы увидите некоторые шестнадцатеричные значения в строках 527, 536, 573, 579, 585, 601 и некоторых других. Замените от (#ffffffff) до (@ color / text).

Нажмите клавиши CTRL + F, чтобы выполнить поиск в Notepad ++ для cacheColorHint, divider, @ * android: color / и Inverse.

CacheColorHint — это фон прокрутки, поэтому нам нужно убедиться, что они используют наш цвет фона. Разделители говорят сами за себя, и мы можем изменить их шестнадцатеричные значения, если хотите. Единственное, что вы не должны касаться ничего, что указывает на @drawable. Обычно это изображения, которые хранятся в виде файлов .png в другом месте в папке .apk.

Когда вы ищете «обратный», он будет отображать ссылки на textAppearanceInverse. Вам нужно дважды щелкнуть по каждому из них и удалить Inverse из этих строк.

Наконец, поиск @ * android: color / просто перепроверит, пропустили ли мы какие-либо изменения в фреймворке. Если вы найдете что-то, что говорит «android: popupBackground»> @ * android: color / white », вам нужно изменить его на« android: popupBackground »> @ color / abs__background_holo_dark». Это включает в себя строку 911, которая может сбивать с толку, поскольку она уже указывает на Android: цвет / черный.

Далее мы откроем res / values ​​/ colors.xml и изменим его так:

Далее res / values ​​/ styles.xml и прокрутите вниз до строки 328. Измените его следующим образом:

() следует изменить на ()

Сделайте то же самое для линии 479, изменив «свет» на «черный».

Теперь перейдите в res / values-v11 / styles.xml и удалите «light», где написано «Holo.Light».

Теперь вы откроете res / values-v14 / styles, который содержит много строк. Таким образом, в первых 46 строках вы хотите удалить любые ссылки «Light» и «Inverse», а затем изменить родителей в строках 53 и 54 на «@ * android: style / Theme.Holo«.

В строке 69 справа от родителя удалите Light из родительского элемента @ * android: style / Theme.Holo.Light.Dialog.

Это много работы, верно? Может быть, теперь вы будете более благодарны темам приложений и скинам!

Далее мы перейдем в папку res / color. Там есть несколько текстовых файлов, которые указывают на черный цвет. Откройте файл res / colors / action_mode_item_text_color_state_list.xml

Вот так это выглядит на складе. Ниже как это нужно сделать.

Вам необходимо внести те же самые изменения в следующие xml-файлы в папке / res / colors: Bottom_button.xml, Button_update.xml, Filelist_text_name.xml, Filelist_text_small.xml, Link_button.xml, Local_filelist_text_name.xml, local_filelist_xt_tml.tml xml, ss_bottom_bottom_text_color_light.xml, tab_text_foreground.xml.

Когда вы закончите с ними, откройте / res / drawable, и есть xmls, которые контролируют цвет фона. Итак, просмотрите их и сделайте так:

Примените те же изменения ко всем другим файлам drawable.xml.

Теперь откройте test.apk и нажмите CTRL + щелчок левой кнопкой мыши, чтобы выделить smali и AndroidManifest, затем щелкните правой кнопкой мыши и снова «Редактируйте с помощью Notepad ++». Согласитесь на все файлы смали 1999 года. Когда это загружается, сделайте CTRL + F поиск -0x100 (черный)

Вы получите около 8 обращений, и вам нужно выбрать smali / com / dropbox / android / activity / TextEditActivity.smali в строке 599. Дважды щелкните эту строку.

Строка 599 содержит -0x100, а строка 601 имеет «SetTextColor». Существует также переменная, которая соответствует строке 599. Таким образом, чтобы кратко объяснить, -0x100, -0x1000000 и даже 0x0 означают черный, -0x1000000 также черный и даже 0x0. Измените строку 599, удалив два 0 из 100 и удалив / high16 следующим образом:

Далее мы будем искать @ * android: style, но на языке smali. Xml будет содержать дополнительный «0» после x, но в smali мы его не используем. Он должен быть «0x103004f» вместо «0x0103004f».

Выполните поиск в Notepad ++ для @ * android: style /, который содержит 0x103.

Второй хит — «const v7, 0x1030073». Найдите это в вашем public.xml из framework-res.apk снова. Вы увидите, что это идентификатор для «Theme.Holo.Light.Dialog». Вам нужно изменить его на публичный идентификатор противоположного стиля темы.

Так как это Theme.Holo.Light.Dialog, вы хотите сделать это Theme.Holo.Dialog. Theme.Holo.Dialog имеет идентификатор «0x103006f». Это изменит всплывающее диалоговое окно с предупреждением, чтобы использовать более темную тему на основе Holo вместо более светлой темы на основе Holo.Light.

Следующее, что нам нужно изменить, это «0x103006e», то есть Theme.Holo.Light. Так что давай и сделай это в противоположном стиле темы. В вашем public.xml из framework-res.apk вы увидите идентификатор для Theme.Holo 0x0103006b. так что давайте изменим эту строку так:

Есть только 2 из них, чтобы пройти. Следующий «0x103000c», который предназначен для Theme.Light в public.xml. Противоположностью этому является Theme.Black, а не ThemeHolo. Таким образом, в public.xml вы увидите идентификатор для Theme.Black «0x01030008» — измените его так:

В других приложениях есть и другие вещи, которые можно редактировать и изменять, и с достаточной практикой вы сможете переназначить почти все. Но на данный момент мы закончили со всеми битами кода (наконец-то!).

Теперь вы можете открыть скрипт из Apk Multi Tool и нажать 12, чтобы скомпилировать приложение. Если отображаются какие-либо ошибки, вы можете попробовать заглянуть в журнал ошибок, чтобы выяснить, что пошло не так, но, скорее всего, вы допустили опечатку или другую ошибку во время редактирования кода.

Когда сборка будет завершена, нажмите 2, а затем 13, чтобы заново подписать приложение.

Стандартное приложение содержит папку с именем «Шаблоны» — вам нужно перетащить ее в неподписанный apk, используя что-то вроде 7zip. Скопируйте unsigned.apk в папку «place-apk-here-for-signature» внутри Apk Multi Tool. Теперь нажмите 18 в терминальном скрипте, чтобы пакетно подписать приложения в этой папке. Когда это будет сделано, скрипт автоматически закроется. Теперь вы можете загрузить .apk на ваше устройство!

Ссылка на основную публикацию