1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android(三)——将程序打包成APK文件 进行APK签名以及反编译APK

Android(三)——将程序打包成APK文件 进行APK签名以及反编译APK

时间:2019-07-18 12:26:19

相关推荐

Android(三)——将程序打包成APK文件 进行APK签名以及反编译APK

文章目录

1. 签名的作用2. Android Studio 如何打包签名3. 反编译 APK3.1 获取图片资源3.2 获取 .XML 资源3.3 获取代码资源

1. 签名的作用

Android APP都需要我们用一个证书对应用进行数字签名,不然的话是无法安装到Android手机上平时我们调试运行时到手机上时,是Android Studio会自动用默认的密钥和证书来进行签名但是我们实际发布编译时,则不会自动签名,这个时候我们就需要进行手动签名

APK签名的作用:

(1)应用程序升级

想升级应用程序,签名证书要相同,应用程序的包名称要相同

(2)应用程序模块化

Android系统允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,以模块化的方式进行部署,用户可以独立的升级其中的一个模块。

(3)代码或者数据共享

Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能,可以在应用程序间以安全的方式共享代码和数据。

2. Android Studio 如何打包签名

调试运行时,Android Studio默认生成的apk在:app/build/outputs/apk目录下

手动签名步骤:

1、打开HelloWorld项目——>Build——> Generate Signed Bundle/APK…

2、选择APK——>Next

3、Create new key——>Next

如果没有key,就创建一个,有的话就选择存在的Key

4、依次填写相关信息——>Ok——>Next

5、选择release——>v1/v1+v2——>Finish

6、打包签名成功后,可以看到 D:\AndroidProject\HelloWorld\app\release 目录下的 app-release.apk 文件

7、获取密钥的签名

(1)cmd——>进入之前存放钥匙的文件夹——>输入钥匙的名字:keytool -list -v -keystore mykey.jks——>输入密钥库口令(之前设置的密码)——>可以看到签名的信息了

(2)直接通过APK获取密钥的签名

cmd——>进入 app-release.apk 文件d的目录:D:\AndroidProject\HelloWorld\app\release——>输入 keytool -printcert -jarfile app-release.apk——>可以看到签名的信息了

打包 Android APK 的方法还有很多,命令行,或者Gradle,ANT,MAVEN等等

3. 反编译 APK

反编译:通过某些反编译软件,对APK进行反编译,从而获取程序的源代码,图片,XML资源等文件

一般想要反编译一个apk,无非就是想获得三样东西:图片资源 、XML资源、代码资源

3.1 获取图片资源

(1)将 .apk后缀的文件后缀改成 .zip——>解压——>打开res目录

点进去可以看到我们想要的图片资源

3.2 获取 .XML 资源

可以在刚刚的目录下看到有 .xml 文件,但是打开的都是乱码或者是空白的

要想获取到这个 xml 资源,需要借助一个名为 AXMLPrinter2.jar 的jar包,然后把这个jar包放在 xml文件的同级目录下,用cmd命令找到这个目录,然后执行

java -jar AXMLPrinter2.jar xxxxx.xml>xxxxx.txt

可以看到多了 AndroidManifest.txt 文件,打开就是 xml资源的内容了

3.3 获取代码资源

首先要准备两个工具:dex2jar 和 jd-gui

dex2jar主要是用来把之前zip解压出来的classed.dex转成jar包的

jd-gui主要是用来打开jar包的

将之前zip文件里的 classes.dex 放到 dex2jar目录下,注意必须要跟 d2j-dex2jar.bat 是同级目录

接着用 cmd,cd 到dex2jar目录下,输入命令:d2j-dex2jar.bat classes.dex

然后目录里会多一个classes-dex2jar.jar 的jar包

注意:如果在cmd里输入命令之后,出现如下错误

dex2jar classes.dex -> .\classes-dex2jar.jar

Detail Error Information in File .\classes-error.zip

Please report this file to /p/dex2jar/issues/entry if possible

这是因为现在旧版的比如2.0版不能反编译某些dex了,可以下载2.1版本的 dex2jar

最后在用 jd-gui 把此jar包打开,最终apk的代码就这样被反编译出来了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。