Декомпиляция — это процесс преобразования скомпилированной программы (например, двоичного кода) обратно в код языка программирования более высокого уровня. Обычно это используется для понимания того, как работает программа, проведения аудита программного обеспечения, восстановления утерянного исходного кода или проведения обучающих исследований. Сложность и эффективность декомпиляции зависят от того, сколько информации (например, имен переменных, комментариев и т. д.) теряется при компиляции исходной программы.
Приложения для Android обычно пишутся на Java или Kotlin и упаковываются в APK-файлы. Из-за этой характеристики приложений Android декомпиляция приложений Android обычно включает в себя несколько этапов, включая декомпиляцию файла APK для получения файла DEX (Dalvik Executable), а затем преобразование файла DEX в исходный код Java.
Обычно используемое программное обеспечение для декомпиляции выглядит следующим образом:
latest version
Выберите то, что вам нужно Версияруководитьскачать。Справочный блог:
Загрузки JDK: Загрузки Java |
нуждатьсясуществовать Создайте новый на своем компьютередокументпапка,Уведомление,Путь не может содержать китайские символы.
Например, мой:
D:
|- Z_Enviroment
|-- Java
|--- jdk1.8.0_251
|--- jre1.8.0_251
Установить Перейдите в это место и выберите переход в наш новый каталог jdk1.8.0_251 (Уведомление здесь даjdk).
Установить Перейдите в это место и выберите переход в наш новый каталог jre1.8.0_251 (Уведомление здесь даjre).
Затем нажмите «Далее» до завершения.
1. Откройте настройки -> система -> Расширенные настройки системы -> переменные среды - > системапеременная(S) -> Нажмите «Новый» -> Новое содержание следующее:
Имя переменной (N): JAVA_HOME
Значение переменной (V): D:\Z_Enviroment\Java\jdk1.8.0_251
2. После нажатия кнопки «Подтвердить» на предыдущем шаге,существоватьсистемапеременная(S)найден вpath
,Дважды щелкните, чтобы открыть,Продолжайте добавлять новые переменные.
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
Откройте окно командной строки cmd и для проверки используйте следующие две команды.
java
javac
Как показано на рисунке ниже, конфигурация переменных средыстановиться功。
скачатьадрес:https://apktool.org/docs/install Нажмитеlatest version
Выберите то, что вам нужно Версияруководитьскачать。
Дважды щелкните, чтобы запуститьjadx-gui-1.4.7.exe
Это программное обеспечение автоматически скомпилирует пакет apk, который мы открываем. Вы можете просмотреть содержимое этого файла различными способами ниже, например: Code, Samli, Simple, Fallback.
Вообще говоря, SDK, к которому подключено наше программное обеспечение, будет находиться в пакете com, и вам нужно найти его уровень за уровнем.
Адрес: https://github.com/skylot/jadx
параметр:
jadx[-gui] [options] <input files> (.apk, .dex, .jar, .class, .smali, .zip, .aar, .arsc, .aab)
Параметры:
-d, --output-dir - Выходной каталог
-ds, --output-dir-src - источник Выходной каталог
-dr, --output-dir-res - ресурс Выходной каталог
-r, --no-res - Не расшифровывать ресурсы
-s, --no-src - Нет Декомпилироватьисходный код
--single-class - Декомпилировать один класс, полное имя, оригинальное имя или псевдоним.
--single-class-output - Если вы хотите декомпилировать один класс, запишите его в файл или каталог.
--output-format - Может быть «java» или «json», по умолчанию: java.
-e, --export-gradle - сохранить как android gradle проект
-j, --threads-count - Количество потоков обработки, по умолчанию: 4
-m, --decompilation-mode - Режим вывода кода:
'auto' - Попробуйте лучший вариант (по умолчанию).
'restructure' - Восстановить структуру кода (нормальная java код)
'simple' - Упрощенные инструкции (линейные, с goto )
'fallback' - Немодифицированная оригинальная инструкция
--show-bad-code - Отображение противоречивого кода (неверно Декомпилировать)
--no-imports - Запрещено использовать импорт. Всегда пишите название всего пакета.
--no-debug-info - Отключить отладочную информацию
--add-debug-lines - Добавьте комментарий с номером строки отладки, если он доступен.
--no-inline-anonymous - Отключить встроенные анонимные классы
--no-inline-methods - Отключить встроенные методы
--no-finally - Не вынимайте последний кусок
--no-replace-consts - Не заменяйте константные значения совпадающими константными полями.
--escape-unicode - Экранировать нелатинские символы в строке (использовать \u)
--respect-bytecode-access-modifiers - Не меняйте исходный модификатор доступа
--deobf - Активировать деобфускацию Функция
--deobf-min - Минимальная длина имени, переименуйте, если короче, по умолчанию: 3
--deobf-max - Максимальная длина имени, переименуйте, если длиннее, по умолчанию: 64.
--deobf-cfg-file - Файл сопоставления защиты от обфускации, по умолчанию: тот же каталог и имя, что и у входного файла, с расширением «.jobf».
--deobf-cfg-file-mode - Дескриптор деобфускации режима настройки файла сопоставления:
'read' - Прочитать, если найдено, не сохранять (по умолчанию)
'read-or-save' - Прочитайте, если найдете, в противном случае сохраните (не перезаписывайте)
'overwrite' - Не читать, сохранить навсегда
'ignore' - Не читать и не сохранять
--deobf-use-sourcename - Использовать имя исходного файла в качестве псевдонима имени класса
--deobf-parse-kotlin-metadata - Воля kotlin Метаданные преобразуются в имена классов и пакетов.
--deobf-res-name-source - Лучшие источники названий ресурсов:
'auto' - Автоматически выбирать лучшее имя (по умолчанию)
'resources' - Использовать имя ресурса
'code' - использовать R Имя поля класса
--use-kotlin-methods-for-var-names - использовать kotlin Внутренний метод переименовывает переменные, значения: отключить, применить, применить и скрыть, по умолчанию: применить.
--rename-flags - Варианты ремонта (список через запятую):
'case' - Исправить проблему с чувствительностью к регистру (согласно --fs-case-sensitive параметры),
'valid' - Переименовать java идентификатор, чтобы сделать его действительным,
'printable' - Удалить непечатаемые символы из идентификаторов,
или одинокий 'none' - Отключить все
или одинокий 'all' - Включить все (по умолчанию)
--fs-case-sensitive - Волядокументсистема视для区分大小写,по умолчаниюдля false
--cfg - Блок-схема управления методом «Воля», сохраненная в указанном документе
--raw-cfg - Схема управления методом сохранения (использовать оригинальную инструкцию)
-f, --fallback - Воля“--decompilation-mode”установлен на "резервный вариант" (устарело)
--use-dx - использовать dx/d8 Конвертировать java байт-код
--comments-level - Установите уровень комментариев к коду, значения: ошибка, предупреждение, информация, отладка, только для пользователя, нет, по умолчанию: информация.
--log-level - Установите уровень журнала, значения: тихо, прогресс, ошибка, предупреждение, информация, отладка, по умолчанию: прогресс.
-v, --verbose - Подробный вывод (Воля --log-level установлен на DEBUG)
-q, --quiet - Выключить выход (Воля --log-level установлен на QUIET)
--version - Распечатать jadx Версия
-h, --help - Распечатать Эта помощь
Plugin Параметры (-P<name>=<value>):
1) dex-input: нагрузка .dex и .apk документ
- dex-input.verify-checksum - Проверка перед нагрузкой dex документпроверятьи,ценить:[yes, нет], значение по умолчанию: да
2) java-convert: Конвертировать .class, .jar и .aar документприезжать dex
- java-convert.mode - Конвертироватьмодель,ценить:[dx, d8, оба], значение по умолчанию: оба
- java-convert.d8-desugar - существовать d8 серединаиспользовать десахар, значение: [да, нет], значение по умолчанию: нет
Пример:
jadx -d out classes.dex
jadx --rename-flags "none" classes.dex
jadx --rename-flags "valid, printable" classes.dex
jadx --log-level ERROR app.apk
jadx -Pdex-input.verify-checksum=no app.apk
jadx -d "aaa" "aaa/www.apk"
# -d выражать Выходной каталог,Подключен сзади"aaa"выражатьиjadxв корневом каталогеaaaОглавление,позже"aaa/www.apk"выражать解析издаодинимя字дляwww.apkупаковкадокументпуть。
Результат следующий:
D:\D_Working\jadx-1.4.7-cli\bin>jadx -d "aaa" "aaa/www.apk"
INFO - loading ...
ERROR - Zip bomb attack detected, invalid sizes: compressed 350, uncompressed 36968, name assets/bin/Data/974b5eb934ce17c42aecb0d547be8a8e
ERROR - Zip bomb attack detected, invalid sizes: compressed 350, uncompressed 36968, name assets/bin/Data/974b5eb934ce17c42aecb0d547be8a8e
ERROR - Zip bomb attack detected, invalid sizes: compressed 350, uncompressed 36968, name assets/bin/Data/974b5eb934ce17c42aecb0d547be8a8e
INFO - processing ...
ERROR - finished with errors, count: 197
После декомпиляции будет две папки
aaa
- resources
- sources
- этотдокументпапка Вниз就Может找приезжать我们接入изSDKинформация
- Например, проверьте, подключено ли да к vungle-ads: aaa\sources\com\vungle\ads
То, что отображается здесь, соответствует тому, что отображается в jadx-gui.
Android Studio сама по себе представляет собой интегрированную среду разработки (IDE) для разработки приложений Android. Ее основная цель — написание, отладка и публикация приложений Android. Хотя Android Studio не предоставляет напрямую функцию декомпиляции приложений Android, она предоставляет некоторые инструменты и поддержку плагинов, которые могут помочь разработчикам понять и в определенной степени проанализировать APK-файлы.
скачать
Официальный сайт загрузки: Download Android Studio & App Tools - Android Developers
После завершения загрузки дважды щелкните «Установить».
Установить
1. Нажмите Далее до конца.,Когда вам нужно выбрать каталог установки,Пожалуйста, выберитеДиск без C
、Чистый английский
盘符Оглавлениеруководить Установить。
2. Так как JDK мы установили ранее,Таким образом, Android Studio поможет вам выбрать предыдущий каталог по умолчанию.,Просто нажмите «Далее» до конца.
3. Если Android не установлен на этом компьютере SDK , подскажет вам Установить,Помните ещедавыбиратьДиск без C
、Чистый английский
盘符Оглавлениеруководить Установить。
4. Терпеливо дождитесь завершения автоматического обновления.
На предыдущем шаге мы создали пустой проект. На данный момент мы просто перетаскиваем наш apk прямо в черное пространство в правой части проекта.
1. Файл dex в красном поле — это файл, который мы скомпилировали соответствующим образом.
2. Щелкните левой кнопкой мыши соответствующий файл dex, чтобы просмотреть конкретное содержимое внутри.
3、нуждаться Уведомлениеизда,Шрифт выделен курсивом,не настоящий контент,нуждаться找正正из字体издокументталантда正确из
4、当你找приезжать Понятноверно应издокументназад,右键单击выбиратьShow Bytecode
Может Проверять该документиз内容,этотдокументпо умолчаниюдаSmailназад缀。
Хотя инструмент jadx-gui также может просматривать содержимое файлов Smail и более удобен, чем AndroidStudio, если мы напрямую анализируем и декомпилируем код Java, нам следует использовать AndroidStudio, чтобы быть ближе к обработке формата нашего кода.
Конечно, это варьируется от человека к человеку.
Apktool — это инструмент обратного проектирования, который в основном используется для декомпиляции и перекомпиляции приложений Android. Он позволяет просматривать файлы ресурсов и исходный код приложения.
ДекомпилироватьAPKдокумент:
apktool d [apkдокументпуть]
Эта команда будет ВоляAPKдокумент Декомпилироватьприезжатьодин Оглавлениесередина,Оглавлениеимяпо умолчаниюдляAPKдокументиздокументимя。你Может通过-o
Параметрыобозначение Выходной каталог:
apktool d [apkдокументпуть] -o [Выходной каталог]
Скомпилировать еще разуже Декомпилироватьиз Оглавление:
apktool b [путь к каталогу]
Эта команда будет Воляобозначениеиз Оглавление重新компилироватьстановитьсяAPKдокумент。по умолчанию情况Вниз,输出изAPKроды[путь к каталогу]/dist/
Вниз。你也Может通过-o
Параметрыобозначение输出APKизпуть:
apktool b [путь к каталогу] -o [apkдокументпуть]
Установитьрамкаресурс:
apktool if [путь к apk ресурса рамки]
некоторыйAPKсуществовать Декомпилироватьчаснуждаться特定израмкаресурсдокумент。этот条Заказ Может Волярамкаресурс УстановитьприезжатьApktoolиз工作Оглавлениесередина,так чтосуществовать Декомпилироватьили Скомпилировать еще разчасиспользовать。этотсуществоватьпозжеизизвлечение и замена framework-res.apk расскажет об этом.
JAVA_HOME
переменные среда уже установлена.jarsigner
инструментверноAPKруководить签имя,Поговорим об этом позже.Пока на компьютере установлена среда Java и настроены переменные среды,就Можетпрямойсуществоватьконсольный вводkeytoolПроверять
D:\Z_Enviroment\Java\jdk1.8.0_251\bin\keytool.exe
D:\Z_Enviroment\Java\jdk1.8.0_251\jre\bin\keytool.exe
C:\Users\xiaozai>keytool
Инструмент управления ключами и сертификатами
Заказ:
-certreq Создать запрос сертификата
-changealias Изменить псевдоним записи
-delete Удалить запись
-exportcert Экспортный сертификат
-genkeypair Сгенерировать ключ верно
-genseckey Сгенерировать ключ
-gencert Создать сертификат на основе запроса сертификата
-importcert Импорт сертификата или цепочки сертификатов
-importpass Импортировать пароль
-importkeystore Импортируйте одну или все записи из других хранилищ ключей.
-keypasswd Изменить ключевой пароль записи
-list Список записей в хранилище ключей
-printcert Распечатать содержание сертификата
-printcertreq Распечатать证书请求из内容
-printcrl Распечатать CRL документиз内容
-storepasswd Измените пароль хранилища ключей
использовать "keytool -command_name -help" получать command_name Использование
Общие команды
# Создайте хранилище ключей с именем PrivateKeys.keystore.
keytool -genkeypair -keysize 1024 -validity 7 -alias "privateKey" -keystore "privateKeys.keystore" -storepass "123456" -keypass "123456" -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"
# команда экспорта
keytool -exportcert -alias "privateKey" -keystore "privateKeys.keystore" -storepass "123456" -file "certfile.cer"
# команда импорта
keytool -importcert -alias "publicCert" -file "certfile.cer" -keystore "publicCerts.keystore" -storepass "123456"
Подробное объяснение параметров:
размер ключа: укажите размер
Срок действия: укажите срок действия в днях.
псевдоним: псевдоним
keystore: указанное имя секретного хранилища
storepass: укажите пароль хранилища ключей.
keypass: укажите ключевой пароль
dname: уникальное отличительное имя, cn имя владельца, ты Название организационного подразделения, o Название организации, л Название города или региона, ул. Название штата или провинции, c Двухбуквенный код страны
keytool -printcert -file certfile.cer
Посмотреть список:
владелец: CN=Example, OU=Example Unit, O=Example Organization, L=City, ST=State, C=Country
Автор: CN=Example CA, OU=Example CA Unit, O=Example CA Organization, L=City, ST=State, C=Country
Серийный номер: 123456789abcdef
Дата начала действия: Thu Jan 01 12:00:00 GMT 2020
Дата окончания срока: Fri Jan 01 12:00:00 GMT 2030
Отпечаток сертификата:
MD5: FA:FB:FC:FD:FE:FF:00:01:02:03:04:05:06:07:08:09
SHA1: DA:DB:DC:DD:DE:DF:10:11:12:13:14:15:16:17:18:19
SHA256: 1A:1B:1C:1D:1E:1F:20:21:22:23:24:25:26:27:28:29:2A:2B:2C:2D:2E:2F:30:31:32:33
Имя алгоритма подписи: SHA256withRSA
Версия: 3
apksigner
иjarsigner
Вседаиспользуется дляверноAndroid APKдокументруководить签имяизинструмент,但это们来自Нет同изпроект,исуществовать一些细节上иметь Место Нет同。签имяверно ВAndroid应用из Установитьключевой,Потому что Androidсистема требует, чтобы все приложения «Установить» проходили знак.
apksigner
даAndroid Часть SDK, специально разработанная для подписи и проверки пакетов приложений Android (APK-файлов). Он поддерживает все новейшие требования и функции для подписи APK, включая поддержку схем подписи V2 и V3.
Подписанный APK:
apksigner sign --ks [keystoreдокумент] --ks-key-alias [псевдоним] [apkдокумент]
Эта команда подписывает APK-файл, используя указанное хранилище ключей и псевдоним.
Проверьте подпись APK:
apksigner verify [apkдокумент]
Эта команда используется для проверки правильности подписи APK.
apksigner
提供Понятно更多из Параметры,нравитьсянастраивать签имя算法、обозначение签имя方案Версияждать,具体Может通过apksigner --help
Проверять。
jarsigner
даодин更通用изинструмент,主хотетьиспользуется дляверноJavaАрхивдокумент(JAR)руководить签имя,但也可используется дляAPKдокумент。相较Вapksigner
,jarsigner
возможный Нет支持一些针верноAndroid Характеристики и требования к подписи, специфичные для APK.
Подписанный APK:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [keystoreдокумент] [apkдокумент] [псевдоним]
этот条Заказиспользоватьобозначениеиз密钥库и别имяверноAPKдокументруководитьзнак.-sigalg
и-digestalg
Параметрыобозначение Понятно签имяисводный алгоритм。
Проверьте подпись APK:
jarsigner -verify -verbose -certs [apkдокумент]
Эта команда используется для проверки подписи файла APK.
apksigner
,因дляэто支持Android Новейшие стандарты и требования для подписания APK.jarsigner
возможныйдаодин Нет错извыбирать。apksigner
иjarsigner
主хотетьиспользуется дляверноуже经存существоватьизAPKдокументруководить签имя,而Нет涉及从.aab
приезжать.apks
из Конвертироватьпроцесс。
bundletool
да Android Studio、Android Gradle плагины и Google Play используется для строительства Android App Bundle из底层инструмент。bundletool
может быть app bundle Преобразовано для различных развертываний на устройствах. APK。
На что следует обратить внимание:Нет能использовать apksigner верно App Bundle Чтобы подписать, вам нужно верно App Bundle Для подписи используйте jarsigner。
Официальная документация: https://developer.android.com/tools/bundletool?hl=zh-cn.
1. Требуемые ресурсы
2. Отображение команд
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd
Уведомление:нравиться果хотетьпрямойиспользоватьbundletool
,нуждаться自建одинbundletool.bat
документ,и把это加приезжатьпеременные средыв。bundletool.bat
内容填写нравиться Вниз:
java -jar yourPath\bundletool.jar %*
Последний %*
Указывает на получение любого количества параметров;
3、bundletool build-apks
Параметры команды
**(необходимый)**обозначение您использовать Android Studio построен app bundle изпуть。нравиться需Понятно解详情,请参阅构建您изпроект
。
4. Перейдите к назначенному устройству.
Если требуется от APK Чтобы развернуть приложение в наборе, используйте install-apks
командовать и использовать --apks=/path/to/apks
Обозначение флага APK Путь к набору, как показано в следующей команде. Если у вас подключено несколько устройств, добавьте --device-id=serial-id
флаг, чтобы указать целевое устройство.
bundletool install-apks --apks=/MyApp/my_app.apks
Официальный пример:
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
aab для apks переподписан
Если вы хотите использовать эти APK 部署приезжатьоборудование,Вам также необходимо добавить информацию о подписи вашего приложения.,Как показано в следующей команде. Если вы не укажете данные подписи,bundletool
попытаюсь использовать ключ отладки как APK знак.
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd
Пример:
java -jar bundletool.jar build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=yourapp.keystore
--ks-pass=pass:123456
--ks-key-alias=trojan
--key-pass=pass:123456
--overwrite --mode=universal
УстановитьapksСумка
java -jar bundletool.jar install-apks --apks=/MyApp/my_app.apks
apk к apk Ручное управление напрямую рассматривает apks как сжатый пакет.,Измените суффикс apks на zip и разархивируйте его.,解压назадиздокументсередина会иметьодинapkСумка。
Если вы используете команду bash, вы можете обратиться к:
java -jar bundletool.jar build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=yourapp.keystore
--ks-pass=pass:123456
--ks-key-alias=trojan
--key-pass=pass:123456
--overwrite --mode=universal
ren my_app.apks my_app.zip
"C:\Program Files\WinRAR\WinRAR.exe" x -ibck my_app.zip
del my_app.zip
del toc.pb
Анализ команды после линии Рен:
Эта командадасериясуществоватьWindows环境Внизиспользоватьиз批处理Заказ,цельсуществовать Переименоватьодин.apks
документдля.zip
документ,然назадиспользоватьWinRAR解压этот.zip
документ,инаконецудалить Оригинал.zip
документиодинимядляtoc.pb
издокумент。Вниз面逐行解析этот些Заказ:
ren
(илиrename
)Заказ,используется для Переименоватьдокумент。это Воляимядляmy_app.apks
издокумент Переименоватьдляmy_app.zip
。Обычно этода因для.apks
документна самом деледаодин特殊Форматиз.zip
документ,Переименоватьназад Можетиспользовать标准из解压инструментоткрыть。C:\Program Files\WinRAR\
Оглавление ВнизизWinRAR.exe
программа,использоватьx
Параметры для распаковкиmy_app.zip
документ。x
параметрда Используется для распаковкидокументи保持Оригиналиметьиз Оглавление结构。-ibck
параметр让WinRARсуществоватьназад台модель Вниз运行,Нет显示界面инеожиданно возникнуть。этотверно В批处理操作很иметь用,Потому что это не прерывает автоматизированные процессы.my_app.zip
обозначение Понятнохотеть解压издокументимя。del
Заказудалитьmy_app.zip
документ。del
Заказудалитьимядляtoc.pb
издокумент。整个Заказ序列из目изда Воляодин.apks
документ Конвертироватьстановиться标准из.zip
Формат,затем разархивируйте его,наконец清理Местоиметь Нет再нуждатьсяиздокумент。
1. Конвертируйте aab в apks (см. шаги выше)
2. Измените суффикс apks на zip и распакуйте его в apk.
3、использоватьadbЗаказ Установитьapk
adb -s идентификатор устройства install my_app.apk
некоторыйAPKсуществовать Декомпилироватьчаснуждаться特定израмкаресурсдокумент。этотчас候我们нуждатьсяверно我们израмкаресурсдокументруководить更新или者替换。未来避免更新назад带来из各种问题,Место以нуждаться把更新前израмкаресурсдокумент Сделать резервную копию。
суждениеданет Установитьиметь framework-res.apk
apktool if framework-res.apk
Подключите свое Android-устройство,этот里我использоватьиздаAndroid14оборудование,拉取на устройствеизрамкаресурсдокументприезжатьPCконец。
adb pull /system/framework/framework-res.apk
java -jar apktool_2.9.2.jar if framework-res.apk
adb pull system/app test
adb pull system/priv-app test
adb pull data/app test
#аннотация:
/system/app Храните программное обеспечение, идущее в комплекте с самим ромом, то есть программное обеспечение системы;
/data/app Хранит программное обеспечение пользователя Установить;
#Уведомление:
/system/priv-app/ВнизизapkНет用система签имя,Просто уметь получать разрешения для подписи или системы.
/system/app/Внизизapk,хотетьполучатьsignatureOrSystemРазрешения,Он должен быть подписан системой.
APK в /data/app не может быть извлечен.,Вам нужно переместить его в другой каталог,существоватьскачатьприезжать电脑
adb shell cp /data/app/com.xueqiu.android-TKqF3b6wXa1KQ3KyKK6o6Q==/base.apk /sdcard/temp123
#получатьapkимя пакета
aapt dump badging PartnerBookmarksProvider.apk
#получатьимя пакета Местосуществоватьпуть
adb shell pm path имя пакета
import os
#получатьapkизимя пакета
import time
class Pull_apk():
def __init__(self,package_name,windows_apk_path):
"""
: package_name : apkизимя пакета
: windows_apk_path : Укажите путь, по которому компьютер хранит apk
"""
self.get_package_name = package_name
self.self.windows_apk_path = windows_apk_path
def pull_select_apk(self):
#получатьapkМестосуществоватьизпуть
apk_path_cmdshow = os.popen(f"adb shell pm path {self.get_package_name}").read()
apk_path = apk_path_cmdshow.split(":")[1].strip()
apk_name = apk_path.split("/")[-1]
windows_apk_path = self.windows_apk_path
#Попробуйте распаковать в систему Windows, если не получается распаковать, то скопировать в каталог sdcard устройства, а потом распаковать в Windows
try:
msg = os.popen(f'adb pull {apk_path} {windows_apk_path} ').read()
print("----------------")
if "1 file pulled" in msg:
print("apkкопироватьстановиться功") else:
#копировать в каталог SDcard
os.system(f'adb shell cp {apk_path} /sdcard/')
time.sleep(3)
os.system(f'adb pull /sdcard/{apk_name} {windows_apk_path}')
print("иначе ветка, апккопировать успешно")
except Exception as e :
print(e)
return apk_name
Введение в Аллатори
1. Java-обфускатор аллаторида второго поколения;
2. Он имеет мощные функции запутывания, такие как запутывание имени, запутывание потока, запутывание строк и технология водяных знаков. поэтомуверно混淆назадиз代码руководить逆向工程几乎да Нетвозможныйиз;
3. Разрешить приложениям, которым требуется запутанный код, добавлять период действия;
4. Эффект запутывания кода очень силен, а операция проста;
5. Недостаточная обфускация оказывает большее влияние на производительность программы.,После обфускации скорость работы снизится (вообще говоря, до тех пор, пока код будет обфусцирован).,В некоторой степени это окажет определенное влияние на производительность);
Как использовать
1. Сначала зайдите на официальный сайт: http://www.allatori.com/
2. После распаковки каталог после распаковки выглядит так:
3. Создайте новую папку.
4. Войдите в каталог lib и скопируйте allatori.jar в новую тестовую папку. Войдите в каталог Tutorial\step01\files и скопируйте Clean.bat, config.xml и RunAllatori.bat в новую тестовую папку.
5. Скопируйте jar-пакет, который нужно перепутать, во вновь созданный тестовый файл.
6. Измените содержимое Clean.bat.
del log.xml
del test-1.0-SNAPSHOT-mix.jar
7. Измените содержимое RunAllatori.bat.
java -Xms128m -Xmx512m -jar allatori.jar config.xml
8. Измените config.xml.
<config>
<input>
<jar in="test-1.0-SNAPSHOT.jar" out="test-1.0-SNAPSHOT-mix.jar"/>
</input>
<ignore-classes>
<!--Нет混淆 引入из第三方jarСумка-->
<!--<class template="class *org*" />-->
<!--Нет混淆из类-->
<!--<class template="class com.*" />-->
</ignore-classes>
<keep-names>
<class access="protected+">
<field access="protected+"/>
<method access="protected+"/>
</class>
</keep-names>
<property name="log-file" value="log.xml"/>
</config>
11. Дважды щелкните Clean.bat, чтобы удалить запутанный jar-пакет и файл журнала. 12. Эффект обфускации.
Откройте файл .bat → Сохранить как → Измените кодировку на формат ANSI, нажмите «Сохранить» и замените исходный файл .bat.
прямой НажмитеUpgrade Gradle wrapper to 7.2 version and re-import the project
руководить更新即可
1. Нажмите «Основной» в первый раз для отладки.,система будет делать Gradle,Ошибка кода
1.1、существоватьcom.test.rebuilttool -> api -> ApiCost.java измените код следующим образом:
package com.test.rebuilttool.api;
public class ApiConst {
public static final String DOAMIN_URL="https://open-api-cn.dataverse.cn/";
public static final String LOGIN_URL=DOAMIN_URL+"modules/accounts/login";
public static final String TOKEN_URL=DOAMIN_URL+"oauth/access_token";
public static final String FILE_URL= DOAMIN_URL+"modules/accounts/key";
}
2. Не удалось выполнить пакет сжатия downloadgradle.,Проверить сеть,Убедитесь, что сеть не заблокирована,Просто перескачать.
3. Проверьте правильность JDKда, настроенного Gradle.,Если будет предложено обновить,Просто нажмите «Обновить».
1. Успех Gradle,Но сборка не удалась,Искаженный код вывода консоли
2. Поскольку китайские комментарии по умолчанию да ГБК,AndroidStudio может отображаться нормально,Но при дакомпилировании GBK Chinese рассматривался gradle как неотображаемый символ да.,Таким образом, будет сообщено об ошибке.
3. Измените параметры виртуальной машины AndroidStudio и добавьте поддержку кодировки UTF-8.
4、Help----->Edit Custom VM options
5. Добавьте настройки кодировки UTF-8.
# custom Android Studio VM options, see https://developer.android.com/studio/intro/studio-config.html
-Dfile.encoding=UTF-8
6、File—>Invalid caches./Restart Перезапустите программное обеспечение
Искал официальный ответ: https://github.com/iBotPeaches/Apktool/issues/3041.,API фреймворка необходимо обновить до версии 34.,Это то, о чем мы говорили выше,Рамку ресурса необходимо обновить.
Обновление на локальном компьютере