主页 > 其他 > apk反编译修改及重新打包

apk反编译修改及重新打包

2025年2月11日 apk反编译修改及重新打包无评论 阅读: 245 次

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。

发表评论

新用户的评论需审核后才会显示;

电子邮件地址不会被公开;
必填项已用*标注