Featured image of post APK 的修改与精简

APK 的修改与精简

最基础玩法

XalaokGPT
这篇文章介绍了如何通过修改和精简 APK 文件来定制手机应用。准备工作包括使用 MT 管理器或 ApkTool,了解 APK 包结构,精简 lib、res 和 assets 文件夹,以及修改 AndroidManifest.xml 文件。重点讨论了不同 CPU 架构的区别和精简方法,如删除广告插件、压缩图片音频、剥离广告 SDK 等。最后提到了构建修改后的 APK 并签名安装的步骤。文章强调了精简 APK 的重要性和一些常见的广告关键词和 SDK 删除注意事项。

准备

手机可以使用 MT 管理器

电脑可以使用 ApkTool

  1. 安装 Java
  2. 在 GitHub 仓库下载最新版本
  3. 下载脚本
  4. 将要解包的 apk 放在同一目录下
  5. 运行 apktool d 安装包文件名.apk -o 输出文件夹 解码 apk

APK 包结构

在精简 apk 之前,首先要了解一下它的结构。

  1. 【assets】
    这个文件夹主要放软件中的一些资源,比如图片,字体,一些其他的东西等,美化时可能会动它。

  2. 【lib】
    这个文件夹中放了软件运行所依赖的 so 库和一些其他的库。so 库文件分为不同的 CPU 架构,像 armeabi,armeabi-v7a, arm64-v8a,x86,x86_64,mips。

  3. 【META-INF】
    签名数据文件夹。我们在修改 apk 之后,要对 apk 进行重新签名才能安装。

  4. 【res】
    这就是精简 apk 的重点修改地方了。软件的布局信息几乎都在里面,包括一些软件的贴图、图标等

  5. 【AndroidManifest.xml】
    这个文件放置了软件的主要信息,其中有包名,版本,Activity,权限等等。该文件使用 Android 的二进制 XML 格式。

  6. 【classes.dex(多个)】
    这个就是软件的代码,编译之后我们只能以 Smali 的形式进行编辑。当然,用 t 可以将它转化成不完整的 Java 代码供我们参考。

  7. 【resourses.arsc】
    这里面是一些二进制的资源引用,通过它可以查资源的十六进制的引用值,方便修改 DEX。

精简 lib

armeabi-v7a、arm64-v8a、armeabi、x86、x86_64 有什么区别?以下是 ChatGPT 给出的内容:

  • armeabi-v7a:基于 ARMv7 指令集的 CPU 架构,适用于大多数现代的 ARM 处理器。
  • arm64-v8a:基于 ARMv8 指令集的 64 位 CPU 架构,适用于支持 64 位指令集的 ARM 处理器。
  • armeabi:基于 ARMv5 指令集的 CPU 架构,适用于一些旧的 ARM 处理器。
  • x86:基于 x86 指令集的 CPU 架构,适用于支持 x86 架构的处理器,比如 Intel 和 AMD 的处理器。
  • x86_64:基于 x86-64 指令集的 64 位 CPU 架构,适用于支持 64 位指令集的 x86 处理器。

现在大部分手机都支持 arm64-v8a 吧,自己看着留。

精简 res asstes

  1. 删除广告插件
    主要有 bdx 开头的压缩包(百度)和 gdt_ 开头的文件夹(腾讯)

  2. 压缩图片、音频
    在压缩前要先看一下,不能预览的不要动

  3. 删除 abc\_ 开头的图片文件(这种一般都是自动生成的,开发者也不会调用)

精简 classes.dex resources.acrs

剥离广告 sdk,用 proguard 工具啥的太高级了,还不会。听说有时候 arsc 越精简越大😅

精简 AndroidManifest.xml

删掉无用 activity service permission 啥的。

常见的广告关键词:

  • qq.e(腾讯)
  • ads.(通用)
  • .ad.(大部分是应用内置)
  • .mobad.(百度)
  • .mobads.(百度)
  • .bytedance.sdk.openadsdk.(穿山甲)
  • sdk(带有 huawei,xiaomi,meizu,vivo,push 等字样的)

sdk 要自行判断,比如微博的 sdk 删了会导致无法用微博登陆和分享,删淘宝可能会导致无法调用淘宝,删 alipay 可能导致无法调用支付宝支付,删带有手机型号的可能会导致无法使用手机运营商相关的服务等等

构建修改好的 apk

运行 apktool b 文件夹 -o 新安装包文件名.apk 即可,注意,还要签名才能安装。

阅读量: 0
Licensed under CC BY-NC-SA 4.0 转载请在留言板告知