• Android逆向之重新打包APK


    1. 反编译

    反编译工具使用apktool点击安装

    使用如下命令:

    apktool d example.apk

    执行完毕后会在当前目录生成一个example文件夹,里面是反编译出的文件。

    2. 修改文件

    在example文件夹里找到AndroidManifest.xml文件,并在application节点里添加如下代码:

    android:networkSecurityConfig="@xml/network_security_config"

    再将以下代码保存成一个xml文件,放在res/xml文件夹下:

    1. "1.0" encoding="utf-8"?>
    2. <network-security-config>
    3. <base-config cleartextTrafficPermitted="true">
    4. <trust-anchors>
    5. <certificates src="system" />
    6. <certificates src="user" />
    7. trust-anchors>
    8. base-config>
    9. network-security-config>

    3. 重新打包

    使用如下命令重新打包:

    apktool b example -o example-b.apk

    打包完成,会在当前目录下生成example-b.apk

    4. 签名

    生成签名文件, 通过命令的方式生成签名,如下命令:

    keytool -genkey -alias example.keystore -keyalg RSA -validity 20000 -keystore example.keystore

    需要输入CN、OU之类的,直接回车忽略就可以,会默认填写Unknown,最后需要输入一个密码,下面签名会用到

    然后使用这个签名文件对刚生成的apk进行签名,命令如下:

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore example.keystore example-b.apk example.keystore

    签名输出以下结果,就完成

    1. >>> 签名者
    2. X.509, CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
    3. [可信证书]
    4. jar 已签名。

    签名完成后进行一下验证,命令如下:

    jarsigner -verify -verbose example-b.apk

    验证输出以下结果:

    1. s = 已验证签名
    2. m = 在清单中列出条目
    3. k = 在密钥库中至少找到了一个证书
    4. - 由 "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown" 签名
    5. 摘要算法: SHA1 (弱)
    6. 签名算法: SHA1withRSA (弱), 2048 位密钥
    7. jar 已验证。

    5. 对齐

    对齐需要有zipalign命令,如果本机没有zipalign命令

    -bash: zipalign: command not found

    直接下载一个Android Studio开发工具,安装好工具之后,全局查找一下zipalign命令在哪个目录下:

    find / -name zipalign
    

    比如我的就在
    /System/Volumes/Data/Users/lihy/Library/Android/sdk/build-tools/34.0.0/zipalign

    找到之后,需要配置环境变量,配置好之后,再执行以下命令:

    zipalign -v 4 example-b.apk example-f.apk

    如果不想配置环境变量,每次执行,需要带上完整路径

    /System/Volumes/Data/Users/lihy/Library/Android/sdk/build-tools/34.0.0/zipalign -v 4 example-b.apk example-f.apk

    好了,现在就可以将example-f.apk安装在手机上了。

  • 相关阅读:
    python中的@property装饰器
    证明素数/质数有无限多个
    浅谈智能安全配电装置在老年人建筑中的应用
    【Timm】create_model所提供的ViT模型概览
    MySQL理论基础篇
    java-php-python-客户台账管理计算机毕业设计
    食堂消费开启新模式,接招吧
    删除单链表偶数节点
    千寻简Git连接Gitee
    数据结构与算法之LeetCode-513. 找树左下角的值 - 力扣(DFS,BFS)
  • 原文地址:https://blog.csdn.net/lihuayong/article/details/133974213