物联网软件开发公司 万字长文带你APK反编译&重签名&aab&apks周折

物联网软件开发公司需要多少钱

你的位置:物联网软件开发公司需要多少钱 > 物联网软件开发资讯 > 物联网软件开发公司 万字长文带你APK反编译&重签名&aab&apks周折
物联网软件开发公司 万字长文带你APK反编译&重签名&aab&apks周折
发布日期:2024-11-05 03:48    点击次数:108
本公众号也有留言功能啦!接待大众留言顾忌!Android反编译

反编译(Decompilation)是将已编译的行径(比如二进制代码)周折回更高等别的编程言语代码的过程。这连续用于领悟行径的职责旨趣,进行软件审计,还原丢失的源代码,或者进行教学连系。反编译的难度和恶果取决于原行径的编译过程中丢失了些许信息(比如变量名、注视等)。

Android愚弄连续是用Java或Kotlin编写的,况兼打包成APK文献。由于Android愚弄的这一特质,反编译Android愚弄连续波及到多个方法,包括反编译APK文献以获得其DEX(Dalvik Executable)文献,然后将DEX文献周折为Java源代码。

连续用到的反编译软件如下:

Apktool

下载地址: https://apktool.org/docs/install  点击latest version采用需要的版块进行下载。

功能:用于反编译Android APK文献,可以解码资源文献以检察其原始方法,并再行编译修改后的文献回APK。

使用场景:检察和裁剪Android愚弄的资源文献,如XML布局和字符串资源。

jadx

装配包地址:https://github.com/skylot/jadx/releases

功能:一个敕令行和图形用户界面愚弄行径,可以将DEX文献径直反编译成Java源代码,无需先周折为JAR。

使用场景:快速检察APK文献的源代码,也维持对APK文献进行裁剪和调试。

Java环境部署

参考博客:

JDK下载:Java Downloads | Oracle

装配

需要在电脑中新建一个文献夹,防护,旅途弗成有汉文。

比如我的是:

D: |- Z_Enviroment  |-- Java   |--- jdk1.8.0_251   |--- jre1.8.0_251

图片物联网软件开发公司

装配到这个位置,采用更始为咱们新建的jdk1.8.0_251目次(防护此处是jdk)

图片

装配到这个位置,采用更始为咱们新建的jre1.8.0_251目次 (防护此处是jre)

图片

之后一说念点击下一步装配完成即可。

建立JAVA_HOME环境变量

1、掀开成立 -> 系统  -> 高等系统成立 -> 环境变量 - > 系统变量(S) -> 点击新建 -> 新建内容如下:

变量名(N): JAVA_HOME变量值(V):D:\Z_Enviroment\Java\jdk1.8.0_251

图片

2、上一步点击说明后,在系统变量(S)中找到path,双击点开,不绝新建添加变量。

%JAVA_HOME%\bin%JAVA_HOME%\jre\bin

图片

考证Java环境

掀开cmd敕令行窗口,使用如下两个敕令进行考证。

javajavac

如下图所示,则是建立环境变量奏凯。

java

图片

avac

图片

jadx-gui反编译器具使用1、下载jadx-gui器具

下载地址:https://apktool.org/docs/install  点击latest version采用需要的版块进行下载。

2、使用jadx-gui器具

双击运行jadx-gui-1.4.7.exe

图片

3、使用掀开文档或者将apk包或者aab包径直拖进愚弄界面,待反编译完成后即可检察干系信息

图片

这个软件会自动编译好咱们掀开的apk包,鄙人方可以用不同的样貌检察这个文献的内容,如:代码、Samli、Simple、Fallback

一般来说,咱们软件接入的SDK齐会在com这个包底下,需要我方一个层级一个层级的去查找。

jadx敕令行的使用

地址: 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 内在方法重定名变量,取值:disable、apply、apply-and-hide,默许:apply    --rename-flags                      - 建造选项(逗号分隔列表):                                           'case' - 建造辨认大小写的问题(笔据 --fs-case-sensitive 选项),                                           'valid' - 重定名 java 标志符以使其灵验,                                           'printable' - 从标志符中删除不可打印的字符,                                          或单个 'none' - 禁用所有重定名                                          或单个 'all' - 启用所有(默许)    --fs-case-sensitive                 - 将文献系统视为辨认大小写,默许为 false    --cfg                               - 将方法左右历程图保存到点文献    --raw-cfg                           - 保存方法左右历程图(使用原始指示)    -f, --fallback                      - 将“--decompilation-mode”成立为“fallback”(已弃用)    --use-dx                            - 使用 dx/d8 周折 java 字节码    --comments-level                    - 成立代码注视级别,取值:error、warn、info、debug、user-only、none,默许:info    --log-level                         - 成立日记级别,值:quiet,progress,error,warn,info,debug,默许:progress    -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, no],默许值:yes   2) java-convert: 周折 .class, .jar 和 .aar 文献到 dex      - java-convert.mode               - 周折模式,值:[dx, d8, both],默许值:both      - java-convert.d8-desugar         - 在 d8 中使用 desugar,值:[yes, no],默许值:no    示例:    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/974b5eb934ce17c42aecb0d547be8a8eERROR - Zip bomb attack detected, invalid sizes: compressed 350, uncompressed 36968, name assets/bin/Data/974b5eb934ce17c42aecb0d547be8a8eERROR - Zip bomb attack detected, invalid sizes: compressed 350, uncompressed 36968, name assets/bin/Data/974b5eb934ce17c42aecb0d547be8a8eINFO  - processing ...ERROR - finished with errors, count: 197

反编译之后会有两个文献夹

aaa	- resources	- sources		- 这个文献夹下就可以找到咱们接入的SDK信息		- 比如看是否接入了vungle-ads:aaa\sources\com\vungle\ads

这里线路的和在jadx-gui里面线路的为一致

AndroidStudio反编译

Android Studio本人是作为Android愚弄开发的集成开发环境(IDE),其主要用途是编写、调试和发布Android愚弄。天然Android Studio不径直提供反编译Android愚弄的功能,但它提供了一些器具和插件维持,可以匡助开发者在一定程度上领悟和分析APK文献。

AndroidStudio下载装配

下载

官方下载网址: Download Android Studio & App Tools - Android Developers

图片

下载好之后双击即可装配。

装配

1、一说念点击下一步,遭遇需要选装配目次的时候,请采用非C盘、纯英文盘符目次进行装配。

2、由于前边咱们装了JDK,是以AndroidStudio会默许帮你采用之前装配的目次,一说念点击下一步即可。

3、要是本机莫得装个Android SDK , 会指示你装配,铭刻依然是采用非C盘、纯英文盘符目次进行装配。

4、耐性恭候自动装配完成。

浮松创建一个空文献技俩

图片

何如检察反编译内容

在上一步中,咱们创建好了一个空技俩,这个时候只好拖着咱们的apk径直丢到这个技俩右侧的黑不拉几的位置就可以了。

图片

1、红框里面的dex文献便是咱们对应编译出来的文献

2、鼠标左键单击对应的dex文献可以检察里面的具体内容

图片

3、需要防护的是,字体线路是斜体的,并不是真实的内容,需要找正正的字体的文献才是正确的

4、当你找到了对应的文献后,右键单击采用Show Bytecode可以检察该文献的内容,这个文献默许是Smail后缀。

图片

为什么有器具还要用AndroidStudio进行检察

jadx-gui器具天然也可以检察Smail文献内容,况兼比AndroidStudio愈加的粗浅,然则要是咱们是通过java代码径直去领悟进行反编译,那么照旧使用AndroidStudio愈加的迫临咱们的代码方法处理。

天然这个也因东说念主而异。

apktool基础敕令使用

Apktool 是一款逆向工程器具,主要用于Android愚弄的反编译(Decompiling)和再编译(Recompiling),它可以让你检察愚弄的资源文献和源代码。

反编译 APK

反编译APK文献:

apktool d [apk文献旅途]

这条敕令会将APK文献反编译到一个目次中,目次名默许为APK文献的文献名。你可以通过-o选项指定输出目次:

apktool d [apk文献旅途] -o [输出目次]
再编译 APK

再编译已反编译的目次:

apktool b [目次旅途]

这条敕令会将指定的目次再行编译成APK文献。默许情况下,输出的APK位于[目次旅途]/dist/下。你也可以通过-o选项指定输出APK的旅途:

apktool b [目次旅途] -o [apk文献旅途]
装配框架资源

装配框架资源:

apktool if [框架资源apk旅途]

某些APK在反编译时需要特定的框架资源文献。这条敕令可以将框架资源装配到Apktool的职责目次中,以便在反编译或再编译时使用。这个在背面的framework-res.apk索求替换会讲到。

防护事项

使用Apktool时,可能需要Java环境。确保系统照旧装配了Java,况兼JAVA_HOME环境变量照旧成立。

反编译和再编译的APK需要签名智力在开拓上装配。可以使用jarsigner器具对APK进行签名,背面会讲。

keytool密钥生成

只好电脑里面装配了java环境,建立了环境变量,就可以径直在左右台输入keytool检察

D:\Z_Enviroment\Java\jdk1.8.0_251\bin\keytool.exeD:\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'

参数详解:

keysize:指定大小validity:指定灵验时刻,单元天alias:别号keystore:指定密钥库称号 storepass:指定密钥库密码keypass:指定密钥密码dname:惟一判别号,cn 所有者称号,ou 组织单元称号,o 组织称号,l 城市或区域称号,st 州或省份称号,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

apksigner和jarsigner齐是用于对Android APK文献进行签名的器具,但它们来自不同的技俩,况兼在一些细节上有所不同。签名关于Android愚弄的装配至关迫切,因为Android系统要求所有装配的愚弄齐必须经过签名。

apksigner

apksigner是Android SDK的一部分,成心想象用于对Android愚弄包(APK文献)进行签名和考证。它维持对APK签名的所有最新要乞降功能,包括对V2、V3签名有缱绻的维持。

签名APK:

apksigner sign --ks [keystore文献] --ks-key-alias [别号] [apk文献]

这条敕令使用指定的密钥库(keystore)和别号(alias)对APK文献进行签名。

考证APK签名:

apksigner verify [apk文献]

这条敕令用于考证APK的签名是否灵验。

apksigner提供了更多的选项,如成立签名算法、指定签名有缱绻版块等,物联网app开发具体可以通过apksigner --help检察。

jarsigner

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文献的签名。

采用哪一个?

要是你在进行Android愚弄开发和发布,推选使用apksigner,因为它维持Android APK签名的最新标准和要求。

要是你在处理一些与Java密切干系的任务,或者需要一个更通用的签名器具,jarsigner可能是一个可以的采用。

防护

apksigner和jarsigner主要用于对照旧存在的APK文献进行签名,而不波及从.aab到.apks的周折过程。

bundletool

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、所需要的资源

bundletool.jar :下载地址 - https://github.com/google/bundletool/releases,干系文档:https://developer.android.com/tools/bundletool

要签名的apk包

签名文献&秘钥

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 敕令的选项

标志讲明--bundle=path**(必需)**指定您使用 Android Studio 构建的 app bundle 的旅途。如需了解笃定,请参阅构建您的技俩。--output=path**(必需)**指定输出 .apks 文献的称号,该文献中包含了愚弄的所有 APK 工件。如需在开拓上测试此文献中的工件,请按照联系何如将 APK 部署到已辘集开拓的部分中的方法操作。--overwrite使用您通过 --output 选项指定的旅途障翳任何现存的输出文献。要是您不添加此标志,而输出文献已存在,您会遭遇构建子虚。--aapt2=path指定 AAPT2 的自界说旅途。 默许情况下,bundletool 包含我方的 AAPT2 版块。--ks=path(可选)指定用于为 APK 签名的部署密钥库的旅途。要是您不添加此标志,bundletool 会尝试使用调试签名密钥为您的 APK 签名。--ks-pass=pass:password 或 --ks-pass=file:/path/to/file指定密钥库密码。要是您指定纯文本方法的密码,请使用 pass: 搁置该密码。要是您要传递包含该密码的文献的旅途,请使用 file: 搁置该旅途。要是您使用 --ks 标志指定密钥库,而未指定 --ks-pass,那么 bundletool 会指示您从敕令行输入密码。--ks-key-alias=alias指定要使用的签名密钥的别号。--key-pass=pass:password或 --key-pass=file:/path/to/file指定签名密钥的密码。要是您指定纯文本方法的密码,请使用 pass: 搁置该密码。要是您要传递包含该密码的文献的旅途,请使用 file: 搁置该旅途。要是此密码与密钥库自身的密码交流,您可以不祥此标志。--connected-device教导 bundletool 针对已辘集开拓的建立构建 APK。要是您不添加此标志,bundletool 会为您的愚弄维持的所有开拓建立生成 APK。--device-id=serial-number要是您有多个已辘集的开拓,请使用此标志指定要部署愚弄的开拓的序列号。--device-spec=spec_json提供 .json 文献的旅途,该文献指定了您要针对其生成 APK 的开拓建立。如需了解笃定,请参阅联系何如生成并使用开拓表率 JSON 文献的部分。--mode=universal将模式成立为 universal。要是您但愿 bundletool 构建一个包含愚弄的所有代码和资源的 APK,以使该 APK 与愚弄维持的所有开拓建立兼容,请使用此选项。防护:bundletool 仅包含功能模块,这些模块在通用 APK 中的对应清单中指定 <dist:fusing dist:include='true'/>。如需了解笃定,请参阅功能模块清单。请防护,这些 APK 要比针对特定开拓建立优化过的 APK 更大。然则,这些 APK 更便于与里面测试东说念主员分享,举例念念在多种开拓建立上测试愚弄的测试东说念主员。--local-testing启用 app bundle 进行腹地测试。在腹地测试时,由于无需上传到 Google Play 劳动器,因此或者竣事快速的迭代测试周期。 如需检察何如使用 --local-testing 标志测试模块装配的示例,请参阅 在腹地测试模块的装配情况。

4、装配到指定开拓

如需从 APK 集部署您的愚弄,请使用 install-apks 敕令并使用 --apks=/path/to/apks 标志指定 APK 集的旅途,如以下敕令所示。要是您辘集了多个开拓,请添加 --device-id=serial-id 标志来指定指标开拓。

bundletool install-apks --apks=/MyApp/my_app.apks
aab转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 
apks转apk

apks转apk手动操作径直把apks算作是一个压缩包,把apks的后缀名改成zip解压,解压后的文献中会有一个apk包。

app开发

要是使用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=universalren my_app.apks my_app.zip'C:\Program Files\WinRAR\WinRAR.exe' x -ibck my_app.zipdel my_app.zipdel toc.pb

ren行背面的敕令领悟:

这段敕令是一系列在Windows环境下使用的批处理敕令,旨在重定名一个.apks文献为.zip文献,然后使用WinRAR解压这个.zip文献,并临了删除原.zip文献和一个名为toc.pb的文献。底下逐行领悟这些敕令:

ren my_app.apks my_app.zip:

这行敕令使用了Windows的ren(或rename)敕令,用于重定名文献。它将名为my_app.apks的文献重定名为my_app.zip。这连续是因为.apks文献本体上是一个特等方法的.zip文献,重定名后可以使用标准的解压器具来掀开。

'C:\Program Files\WinRAR\WinRAR.exe' x -ibck my_app.zip:

这行敕令调用了装配在C:\Program Files\WinRAR\目次下的WinRAR.exe行径,使用x参数来解压my_app.zip文献。x参数是用来解压文献并保抓原有的目次结构。

-ibck参数让WinRAR在后台模式下运行,不线路界面和弹出窗口。这关于批处理操作很有用,因为它不会中断自动化历程。

my_app.zip指定了要解压的文献名。

del my_app.zip:

使用del敕令删除my_app.zip文献。

del toc.pb:

临了,使用del敕令删解雇为toc.pb的文献。

通盘敕令序列的意见是将一个.apks文献周折成标准的.zip方法,然后解压它,临了算帐所有不再需要的文献。

aab转apk并装到开拓

1、aab转为apks(参考上头的方法)

2、apks后缀改为zip解压缩为apk

3、使用adb敕令装配apk

adb -s 开拓id install my_app.apk 
framework-res.apk索求替换

某些APK在反编译时需要特定的框架资源文献。这时候咱们需要对咱们的框架资源文献进行更新或者替换。畴昔幸免更新后带来的多样问题,是以需要把更新前的框架资源文献备份一份。

判断是否装配有 framework-res.apk

apktool if framework-res.apk
1、把开拓中的framework-res.apk索求出来

辘集对应的Android开拓,这里我使用的是Android14开拓,拉取开拓上的框架资源文献到PC端。

图片

adb pull /system/framework/framework-res.apk
2、把framework-res.apk领悟到对应文献夹
java -jar apktool_2.9.2.jar if framework-res.apk
附:1:索求开拓系统apk
adb pull system/app test adb pull system/priv-app test adb pull data/app test#注解:/system/app 存放rom本人附带的软件即系统软件;/data/app 存放用户装配的软件;#防护:/system/priv-app/下的apk无谓系统签名,就或者获得signatureOrSystem权限。/system/app/下的apk,要获得signatureOrSystem权限,必须用系统签名才行。/data/app底下的apk无法索求,需要把它复制到别的目次下,鄙人载到电脑adb shell cp /data/app/com.xueqiu.android-TKqF3b6wXa1KQ3KyKK6o6Q==/base.apk /sdcard/temp123#获得apk包名aapt dump badging PartnerBookmarksProvider.apk#获得包名地方旅途adb shell pm path 包名
附加2:用python写一个通用的apk索求代码
import os#获得apk的包名import timeclass 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('else分支,apk复制奏凯')        except Exception as e :            print(e)        return apk_name
污染加密

Allatori的先容

1、allatori是第二代的java污染器;

2、具有定名污染,流污染、字符串污染以及水印本事等等高大的污染功能, 因此对污染后的代码进行逆向工程简直是不可能的;

3、允许对需要污染代码的愚弄行径添加灵验期;

4、对代码污染恶果颠倒强,而且操作粗放;

5、不及是污染之后对行径的性能有较大的影响,污染之后运行速率会有所缩小(一般来说只好对代码进行污染,多些许少齐会对性能产生一定的影响的);

使用方法

1、领先从官网下载:http://www.allatori.com/

2、下载完解压,解压之后的目次是这么的:

图片

3、新建一个文献夹

图片

4、参预lib目次将allatori.jar复制到新建的test文献夹、参预tutorial\step01\files目次将Clean.bat、config.xml、RunAllatori.bat复制到新建的test文献夹中

图片

5、将需要污染的jar包拷贝到新建的test文献中

图片

6、修改Clean.bat的内容

del log.xmldel test-1.0-SNAPSHOT-mix.jar

图片

7、修改RunAllatori.bat的内容

java -Xms128m -Xmx512m -jar allatori.jar config.xml

图片

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k

①、-Xmx3550m:成立JVM最大可用内存为3550M.

②、-Xms3550m:成立JVM促使内存为3550m.此值可以成立与-Xmx交流,以幸免每次垃圾回收完成后JVM再行分拨内存.

1、排列三最近两期百位号码分别开出2和3,历史上百位号码连续两期分别开出2和3的奖号出现了56期。前五期开出之后其下期奖号分别为:014、096、790、590、548;  

张单鸿:足球预测又斩14连红,欧洲杯期间状态火热,此前还曾8连红、9连红、11连红,长线战绩命中率超高!欧洲杯半决赛西法大战又红,荷兰vs英格兰稳胆已出![查看今日推荐]

③、-Xmn2g:成立年青代大小为2G.通盘堆大小=年青代大小 大哥代大小 抓久代大小.抓久代一般固定大小为64m,是以增大年青代后,将会减小大哥代大小.此值对系统性能影响较大,Sun官方推选建立为通盘堆的3/8.

④、-Xss128k:成立每个线程的堆栈大小.JDK5.0以后每个线程堆栈大小为1M,昔时每个线程堆栈大小为256K.更具愚弄的线程所需内存大小进行 休养.在交流物理内存下,减小这个值能生成更多的线程.然则操作系统对一个程度内的线程数照旧有适度的,弗成无穷生成,教师值在3000~5000傍边.

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包以及log文献 12、污染恶果

(1)污染前:

图片

(2)污染后:

图片

遭遇的问题 - 责罚有缱绻dos敕令有汉文旅途的.bat乱码

掀开.bat文献→另存为→编码改为ANSI方法,点击保存,替换底本的.bat文献就行。

AndroidStudio问题技俩构建失败责罚

图片

径直点击Upgrade Gradle wrapper to 7.2 version and re-import the project进行更新即可

图片

gradle失败责罚

1、第一次点击main进行调试,系统会进行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、下载gradle 压缩包失败,搜检汇集,说明下汇集莫得被墙,再行下载即可。

3、搜检Gradle建立的JDK是否正确,要是指示升级,径直点升级即可。

图片

乱码报错责罚

1、Gradle奏凯,然则build失败,左右台输出乱码

2、由于汉文注视默许是GBK,AndroidStudio或者平素线路,然则编译的时候GBK汉文被gradle合计是不可映射的字符,是以会报错。

3、修改AndroidStudio的VM Options,加多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 重启重启软件

图片

签名过程失败: error: attribute android:enableOnBackInvokedCallback not found.

搜索到官方回话:https://github.com/iBotPeaches/Apktool/issues/3041,需要更新framework的API到34,这便是咱们上头提到过的,资源框架需要更新。

图片

更新到本机

图片

本站仅提供存储劳动,所有内容均由用户发布,如发现存害或侵权内容,请点击举报。

Powered by 物联网软件开发公司需要多少钱 @2013-2022 RSS地图 HTML地图

Copyright Powered by365站群 © 2013-2024 云迈科技 版权所有