apk反编译/回编译

2019-08-22  本文已影响0人  三丶斤

再次记录一次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

回编译完成。

上一篇下一篇

猜你喜欢

热点阅读