apk反编译修改及重新打包
1、下载apktool工具
https://apktool.org/docs/install/
先安装JRE(jave8),然后按照说明下载安装apktool
2、反编译
比如反编译一个apk,命令格式
apktool d 待反编译的apk名称 -o 输出目录
反编译后的目录结构如下
3、修改资源
比如我们要修改包名,先修改AndroidManifest.xml文件,找到package属性,将其修改为新的包名,并修改AndroidManifest.xml中包名相关的语句
在 <application> </application> 中添加
<application>
<meta-data android:name="CHANNEL" android:value="TapTap"/>
</application>
然后修改smali目录下的相关代码,确保所有引用旧包名的地方都替换为新包名。
打开 apktool.yml
搜索 renameManifestPackage默认值为 null,赋值为新包名
4、重新打包
命令格式
apktool b 待打包的目录名 -o 输出apk名称
5、签名
安装JDK工具
设置path路径
用keytool生成证书
keytool -genkey -alias 1.keystore -keyalg RSA -validity 36500 -keystore 2.keystore
其中,1.keystore是别名,因为因一个证书库中可以存放多个证书,通过别名标识证书。RSA是密钥算法,可以选择的密钥算法有:RSA、DSA、EC。36500是证书有效天数,我这里相当于100年。2.keystore是当前生成的证书。命令回车后会让你填口令、姓氏、单位名称等信息,随便填就好了,最后y确认就生成了证书。
接下来使用JDK自带工具jarsigner进行签名(只支持V1签名)。如果你想兼容V2签名,可以用Android Studio的自带工具apksigner
jarsigner -verbose -keystore 2.keystore -signedjar my_signed.apk my.apk 1.keystore
其中,2.keystore就是上一步生成的证书名, my_signed.apk是签名后的APK,名称自定义。my.apk是上一节重新打包的APK,1.keystore是上一步的keystore的别名。回车后根据提示输入上一步的口令就生成了签名APK:my_signed.apk。
发表评论