apk反编译/回编译

再次记录一次apk反编译/回编译过程,链接失效请留言,会及时更新。

参考博客: https://blog.csdn.net/w327918069/article/details/82761437

准备工具

apk反编译

首先,我们需要一个apk,下图是Android Studio编写并打包的一个apk。

1.png

其实apk就相当于一个zip压缩包,通过WinRar工具可以对其解压缩,像这样:

1.png

看到了我们熟悉的AndroidManifest.xml文件,我们打开看一看:
1.png

OMG为什么是乱码呢?是因为Android在打包成apk时,会把部分xml文件编码为二进制文件,因此我们无法查看。

这就阻挡了我们码?

此时,祭出我们的神器---->apktool,当当当当~~~~~~~。
一行命令进行apk反编译:
apktool d -r app-debug.apk 一定要加入参数-r,不然后面回编译回报错。

1.png

此时再次打开文件AndroidManifest.xml就可以看到源文件了。

apk反编译到此结束。

apk回编译

回编译就是通过apk反编译生成的目录文件转换成一个apk。
十分简单的一行命令:
apktool b app-debug

1.png

在反编译目录中的dist目录就可以看到回编译生成的apk文件。

apk签名

此时安装apk到手机无法安装成功,还需要对apk进行签名才能安装。

1.生成key.keystore
keytool -genkey -alias key.keystore -keyalg RSA -validity 30000 -keystore key.keystore

1.png

我的电脑运行上面代码控制台乱码,设置控制台编码为GBK即可解决( 参考博客
chcp 936
1.png

可以看到key.keystore已经生成。

2.对apk进行签名
可用于没有签名和已经签名的apk,再次签名。

jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]

命令格式及参数意义:

-verbose -> 输出签名过程的详细信息

-keystore [keystorePath] -> 密钥的库的位置

-signedjar [apkOut] -> 签名后的输出文件名

[apkin] -> 待签名的文件名

[alias] -> 证书别名
jarsigner -verbose -keystore key.keystore -signedjar app-debug_signed.apk app-debug.apk key.keystore

1.png

回编译完成。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容