• APK的反编译,签名,对齐


    APK的反编译,签名,对齐 – WhiteNight's Site

    2023年9月22日

    标签:Android, 应用开发

    记录下相关的命令行参数

    APK的打包与解包

    java -jar apktool.jar

    首先,需要一个jar包,以我在用的为例:apktool_2.8.1.jar。并且你的机子要有java环境。为了方便操作,我把所有需要用到的工具都放同一个文件夹内,这里先放上集齐了三相之力(apktool,apksigner,zipalign)的图片

    再来说下前情提要:我已经受够了某些应用的开机摇一摇广告,还有那种把“×”放的奇小无比的坑人广告。所以就开始自学Android的反编译。

    其中,假设要对demo.apk解包,那么需要用到该指令(CMD):

    java -jar apktool_2.8.1.jar d demo.apk -o test

    解包完成后,在test文件夹中就能看到反编译的结果了。如果反过来,把反编译的APK重新打包回去的话,需要用到以下指令:

    java -jar apktool_2.8.1.jar b test -o demo_repackage.apk

    不过这么做还不够,要想在手机上安装重打包的apk还需要进行签名。

    APK的对齐

    zipalign

    在签名之前,建议下个Android Studio,跟着网上步骤安装就行。不过安装SDK的时候记得翻墙,不然大概率下载失败。

    在签名之前,APK还需要对齐,不然在Android 11及以上的版本会装不上报错。对齐的话则需要用到zipalign。这东西在安装Android Studio的时候就会自带在build_tool文件夹下。

    对齐apk的话要用到该指令,如果对已经有签名的apk对齐的话,记得重新打一次签名。

    1. zipalign -f -v 4 infile.apk outfile.apk
    2. zipalign -c -v 4 outfile.apk //查看APK是否对齐

    APK的签名

    apksign与keytool

    要签名的话,需要用到keytool和apksigner。前者在安装java环境的时候一般来说会自带,可以CMD输入keytool看看能不能正常运行。

    而后者在安装java环境的时候可能自带,也可能没有。我就属于后者。但这个工具在Android Studio里头安装SDK的时候自带了,路径一般为:

    (你选择安装SDK的文件夹)\build-tools\34.0.0\lib

    而生成签名,需要先通过keytool生成签名文件.keystore。比如这里生成了一个密钥库密码为123456(该密码最少要六位,也可以自己设置)的签名文件,这个密码后面还要用到。

    keytool -genkey -v -keystore adam.keystore -alias adam -storepass 123456 -keypass 123456 -keyalg RSA -validity 36000

    接下来就是通过apksigner给apk签名了

    apksigner sign --ks adam.keystore --ks-key-alias adam demo_repackage.apk

    签完名后就可以扔回手机了,能安装就算OK。

    写者注

    有的APK在反编译前,建议先扔进模拟器或者虚拟机里看看能不能跑。比如我在弄的这个A.apk,扔进模拟器本身就无法启动,只能扔进真机环境里面跑。搞得我还以为是我反编译哪一步出错了。
  • 相关阅读:
    SAAS智能打印设计->自定义打印模板
    邀请试用 实景三维模型在线浏览及网页分享平台
    KMP字符串搜索算法及next数组计算
    2.01_python+Django+mysql实现pdf转word项目_项目开发- 创建Django项目
    topK问题---使用优先级队列解决
    Pulsar Meetup 深圳 2024 大咖推荐
    [数据结构-线性表1.2] 链表与 LinkedList<T>(.NET 源码学习)
    postgresql-聚合函数增强功能
    MyBatis多条件查询、动态SQL、多表操作、注解开发详细教程
    【技术积累】Python中的Pandas库【二】
  • 原文地址:https://blog.csdn.net/white_night_SZTU/article/details/133190416