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

本文详细介绍如何使用apktool、dex2jar和jd-gui等工具进行Android APK的反编译,包括资源修改、重新打包及签名过程。通过具体步骤指导,帮助读者理解APK反编译原理。

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

https://blog.youkuaiyun.com/qq_42889476/article/details/106918488

在反编译之前先明确下,反编译别人的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

    1

-o 指定解码目标文件夹的名称(默认使用APK文件的名字来命名目标文件夹)
然后继续执行命令行
apk-file是上一步输出的文件夹的名字

apktool.bat b apk-file

    1

会发现执行该命令行后会多出下面两个文件夹,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

    1

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

重新签名
签名之前需生成一个Keystore文件
进入到apk的文件夹下面,然后执行命令行
xxx代表你需要填写的参数

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

    1

-genkey 产生证书文件
-alias 产生别名
-keystore 指定密钥库的.keystore文件中
-keyalg 指定密钥的算法,这里指定为RSA(非对称密钥算法)
-validity 为证书有效天数,这里我们写的是40000天

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

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

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

    1

1:keystore文件的绝对路径
2:keystore的别名
3:keystore文件的密码
4:新的apk包名
5:要签名的apk包路径

填入相对应的参数就可以生成新的带有签名的Apk包了
————————————————
版权声明:本文为优快云博主「你的外祖父」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_42889476/article/details/106918488

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值