反编译(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系统要求所有装配的愚弄齐必须经过签名。
apksignerapksigner是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检察。
jarsignerjarsigner是一个更通用的器具,主要用于对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的周折过程。
bundletoolbundletool 是 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.apksaab转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.apksapks转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.apkframework-res.apk索求替换
某些APK在反编译时需要特定的框架资源文献。这时候咱们需要对咱们的框架资源文献进行更新或者替换。畴昔幸免更新后带来的多样问题,是以需要把更新前的框架资源文献备份一份。
判断是否装配有 framework-res.apk
apktool if framework-res.apk1、把开拓中的framework-res.apk索求出来
辘集对应的Android开拓,这里我使用的是Android14开拓,拉取开拓上的框架资源文献到PC端。
图片
adb pull /system/framework/framework-res.apk2、把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,这便是咱们上头提到过的,资源框架需要更新。
图片
更新到本机
图片
本站仅提供存储劳动,所有内容均由用户发布,如发现存害或侵权内容,请点击举报。