☰
Apk反编译
2026/10/10 1:15:08 网站建设 项目流程

jd-gui和luyten

用jd-gui打开编译后的jar 类中出现多行注释Byte code:开头

这是由于反编译工具的JDK版本过高导致的显示差异,并非代码本身问题。使用低版本JDK进行反编译以获得正常显示。或者用luyten打开jar查看。

修改Apk

参考: https://xz.aliyun.com/news/16036

使用apk messenger查看app信息、查看apk信息

打开APK Messenger.exe,将apk拖到界面上后可查看app信息。

下载地址:https://www.ghxi.com/apkinfo.html

使用jadx查看apk反编译代码

打开jadx-gui-1.5.5.exe,可直接再打开apk文件查看反编译的代码。可继续全局搜索,查看目标所在的文件。

下载地址:Release 1.5.5 · skylot/jadx · GitHub

使用apktool反编译apk

知道要修改位置后,可以使用apktool反编译apk,输出反编译后的smali代码和资源文件。

先进入apktool目录,再用java命令执行apktool.jar,结果会在apktool目录下生成输出的反编译后的文件夹:

#java -jar apktool.jar d APK文件路径 java -jar apktool.jar d d:\app-release-260513.apk

使用Apktool重新打包修改后的文件

修改文件后,使用Apktool重新打包,会在反编译后的文件夹中的dist目录中生成重新打包后的新的未签名的apk。

#java -jar apktool.jar b 反编译后的文件夹路径 java -jar apktool.jar b D:\tools\apktool_2.11.1\app-xdl-release-260513

使用zipalign工具对APK进行对齐

为了提高安装效率和性能,可以使用zipalign工具对APK进行对齐。zipalign工具是Android SDK的一部分,用于优化APK文件,确保所有未压缩的数据都以4字节边界对齐,从而提高应用程序的运行效率。
zipalign可以在V1签名后执行,只能在V2签名前执行。

cd C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\37.0.0 # zipalign -v 4 未签名APK文件路径 对齐后的APK文件路径 zipalign -v 4 D:\tools\apktool_2.11.1\app-xdl-release-260513\dist\app-xdl-release-260513.apk D:\tools\apktool_2.11.1\app-xdl-release-260513\dist\app-xdl-release-260513-aligned.apk

签名apk

  • jarsigner是JDK提供的针对jar包签名的通用工具,位于JDK/bin/jarsigner.exe。
  • apksigner是Google官方提供的针对Android apk签名及验证的专用工具,位于Android SDK/build-tools/SDK版本/apksigner.bat。
  • V1签名:来自JDK(jarsigner), 对zip压缩包的每个文件进行验证,签名后还能对压缩包修改(移动/重新压缩文件)。
  • V2签名:来自Google(apksigner),对zip压缩包的整个文件验证,签名后不能修改压缩包(包括zipalign)。
  • ‌Android 开发现状‌:虽然 jarsigner 可对 APK(本质是 ZIP/JAR)进行 ‌V1 签名‌,但 Android 7.0+ 强制要求 ‌V2/V3 签名‌。目前 Google 推荐使用 ‌apksigner‌ 工具替代 jarsigner 进行 APK 签名,以支持现代安全方案 。
  • ‌安全性‌:默认算法可能较旧(如 SHA1),生产环境建议显式指定SHA-256等强算法 。‌‌从 Android 11 (API 级别 30) 开始,Google Play 为了增强 APK 的安全性,要求所有上传到 Google Play 的 APK 必须使用签名方案 v2 或更高版本进行签名。

使用jarsigner工具对APK进行签名,jarsigner是Java提供的一个用于签名和验证文件的工具,位于jdk中。

apksigner位于C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\37.0.0下。

#使用 jarsigner 签名 # jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore keystore文件路径 -storepass keystore密码 -signedjar 签名后的APK文件路径 未签名的APK文件路径 keystore别名 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\AndroidStudio\XdlLib\bjxdljg.jks -storepass 密码 -signedjar D:\tools\apktool_2.11.1\app-xdl-release-260513\dist\app-xdl-release-260513-signed.apk D:\tools\apktool_2.11.1\app-xdl-release-260513\dist\app-xdl-release-260513.apk 别名 jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore D:\AndroidStudio\XdlLib\bjxdljg.jks -signedjar D:\tools\apktool_2.11.1\app-xdl-release-260513\dist\app-xdl-release-260513-signed.apk D:\tools\apktool_2.11.1\app-xdl-release-260513\dist\app-xdl-release-260513.apk 别名 #使用 apksigner 签名 #apksigner sign --ks [your private key storage path] --ks-key-alias [your key alias] --out [path to signed file] [path to unsigned file] apksigner sign --ks D:\AndroidStudio\XdlLib\bjxdljg.jks --ks-key-alias bjxdljg_alias --out D:\tools\apktool_2.11.1\app-xdl-release-260513\dist\app-xdl-release-260513-aligned-signed.apk D:\tools\apktool_2.11.1\app-xdl-release-260513\dist\app-xdl-release-260513-aligned.apk

检查 APK 的签名版本

在签名或重新签名之后,使用以下命令来检查 APK 的签名版本:

apksigner verify --verbose --print-certs xxx.apk

如果APK已正确签名,会看到类似“VERIFIED OK”的消息。并查看输出中是否包含V3.0 Signer: certificate,确认是否使用了 v2 或更高版本的签名方案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询