Android逆向之重新打包APK

1. 反编译

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

使用如下命令:

bash 复制代码
apktool d example.apk

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

2. 修改文件

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

bash 复制代码
android:networkSecurityConfig="@xml/network_security_config"

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

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </base-config>
</network-security-config>

3. 重新打包

使用如下命令重新打包:

bash 复制代码
apktool b example -o example-b.apk

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

4. 签名

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

bash 复制代码
keytool -genkey -alias example.keystore -keyalg RSA -validity 20000 -keystore example.keystore

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

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

bash 复制代码
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore example.keystore example-b.apk example.keystore

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

bash 复制代码
>>> 签名者
    X.509, CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
    [可信证书]

jar 已签名。

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

bash 复制代码
jarsigner -verify -verbose example-b.apk

验证输出以下结果:

bash 复制代码
  s = 已验证签名 
  m = 在清单中列出条目
  k = 在密钥库中至少找到了一个证书

- 由 "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown" 签名
    摘要算法: SHA1 (弱)
    签名算法: SHA1withRSA (弱), 2048 位密钥

jar 已验证。

5. 对齐

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

bash 复制代码
-bash: zipalign: command not found

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

bash 复制代码
find / -name zipalign

比如我的就在

/System/Volumes/Data/Users/lihy/Library/Android/sdk/build-tools/34.0.0/zipalign

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

bash 复制代码
zipalign -v 4 example-b.apk example-f.apk

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

bash 复制代码
/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安装在手机上了。

相关推荐
居安思危_Ho3 个月前
【Android 笔记】Android APK编译打包流程
android·apk打包·apk打包流程
Android逆向小菜鸡3 个月前
Android逆向题解攻防世界-easy-apk
android·android逆向·魔改base64
王伟19826 个月前
安卓手机APP开发__媒体开发部分__APK裁剪
android·媒体·app开发·手机开发·apk打包
Gerry_Liang7 个月前
Mac反编译APK
macos·反编译·android逆向·apktool·dex2jar
BruceGerGer1 年前
flutter开发实战-打包应用apk签名及Android studio没有generate signed bundle/apk问题修改
android·flutter·android studio·apk签名