Android逆向之重新打包APK

1. 反编译

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

使用如下命令:

apktool d example.apk

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

2. 修改文件

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

android:networkSecurityConfig="@xml/network_security_config"

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



    
        
            
            
        
    

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

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

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

jar 已签名。

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

jarsigner -verify -verbose example-b.apk

验证输出以下结果:

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

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

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安装在手机上了。

你可能感兴趣的:(Android,Android逆向,APK反编译,APK签名,APK打包)