1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android Apk反编译 修改资源 重新签名以及重新打包的详细讲解

Android Apk反编译 修改资源 重新签名以及重新打包的详细讲解

时间:2020-10-19 10:28:30

相关推荐

Android Apk反编译 修改资源 重新签名以及重新打包的详细讲解

在反编译之前先明确下,反编译别人的Apk不是件很道德的事情,毕竟这是别的程序员辛辛苦苦写出来的代码,所以说代码混淆这东西很重要,就是为了防止别人反编译。本文抱着学习的态度,在一些特殊情况下研究下怎么反编译一个没有加混淆的Apk。

流程:APK反编译 -> 修改 -> 重新打包 -> 重新签名

Apk反编译

反编译所使用的到的工具

apktool,反编译apk,从apk中提取图片和布局资源

dex2jar,将可运行文件classes.dex反编译为jar源码文件

java-decompiler(jd-gui),主要用来查看jar源码文件

在反编译之前要确保电脑上有Java

检查有无Java的方法,打开命令行,输入java -version

如果出现如下图所示就是安装了Java,没有的话需要自行配置环境

下载apktool.bat脚本(右键,链接另存为…)

下载最新版本的apktool.jar,并且重命名为apktool.jar

将apktool.bat和apktool.jar还有需要反编译的Apk文件放在同一目录下就可以正常使用了

反编译命令行:

output_dir代表文件的输出路径

test.apk代表Apk的文件名

apktool.bat d -o <output_dir> test.apk

-o 指定解码目标文件夹的名称(默认使用APK文件的名字来命名目标文件夹)

然后继续执行命令行

apk-file是上一步输出的文件夹的名字

apktool.bat b apk-file

会发现执行该命令行后会多出下面两个文件夹,dist文件夹下面放的就是apk文件

此时,可以查看AndroidManifest.xml,res及smali文件了。甚至可以修改这个目录下的资源文件或者smali文件,然后重新编译。如果需要修改图片的话,只需要找到对应位置替换掉就好了;

apktool反编译出来只能得到apk的smali文件,即汇编语言版本,并不能得到源代码。

查看源码

先将需要反编译的apk的后缀名改为.zip或者.rar,然后解压得到其中的classes.dex文件

将classes.dex复制到解压后的dex2jar-2.0文件夹下

进入到该文件夹后执行命令行(将其转换为classes-dex2jar.jar包。):

d2j-dex2jar classes.dex

然后使用jd-gui打开该文件就可以看到源码了;

重新签名

签名之前需生成一个Keystore文件

进入到apk的文件夹下面,然后执行命令行

xxx代表你需要填写的参数

keytool -genkey -v -keystore xxx -alias xxx -keyalg xxx -validity xxx

-genkey 产生证书文件

-alias 产生别名

-keystore 指定密钥库的.keystore文件中

-keyalg 指定密钥的算法,这里指定为RSA(非对称密钥算法)

-validity 为证书有效天数,这里我们写的是40000天

之后会让你填写相关信息,最后确认之后就可以生成一个keystore文件

然后用这个生成的keystore文件进行签名

jarsigner -keystore 1 -storepass 3 -signedjar 4 5 2

1:keystore文件的绝对路径

2:keystore的别名

3:keystore文件的密码

4:新的apk包名

5:要签名的apk包路径

填入相对应的参数就可以生成新的带有签名的Apk包了

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