Android之反编译APK

本文介绍如何在Mac环境下使用dex2jar、apktool及jd-gui等工具进行APK文件的反编译,包括Java代码和资源文件的反编译过程,并提供了重新打包及签名的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文注意纪录一些零碎的东西

mac 下 反编译 apk 

反编译APK需要的工具如下:
- dex2jar 这个工具用于将dex文件转换成jar文件
下载地址:http://sourceforge.net/projects/dex2jar/files/
- apktool 这个工具用于最大幅度地还原APK文件中的9-patch图片、布局、字符串等等一系列的资源。
下载地址:http://ibotpeaches.github.io/Apktool/install/
- jd-gui 这个工具用于将jar文件转换成Java代码
下载地址:http://jd.benow.ca/
保持最新的工具版本

我下载的tool:https://pan.baidu.com/s/1dFN2zZj


---反编译java代码
1.解压dex2jar压缩包。
2.终端中cd命令到dex2jar目录。
3.将apk文件改后缀apk为zip,将其中的classes.dex文件拷贝到dex2jar目录
4.在终端运行./d2j-dex2jar.sh classes.dex (出现Permission Denied异常,./d2j-dex2jar.sh: Permission deniedh,修改权限即可,我直接修改的文件夹权限
cd ..
chmod -R 777 dex2jar-2.0 )
5.这样反编译代码成功,目录中会生成一个classes-dex2jar.jar文件,将这个文件用jd-gui打开,即可看到源码(可能给是混淆过的)

----反编译资源
mac os apktool download
Download Mac wrapper script (Right click, Save Link As apktool)
Download apktool-2 (find newest here)
Rename downloaded jar to apktool.jar
Move both files (apktool.jar & apktool) to /usr/local/bin (root needed)
Make sure both files are executable (chmod +x)
Try running apktool via cli
下载好apktool和apktool.jar(最新版)之后,将其拷贝到/usr/local/bin目录
chmod +x apktool.jar 执行权限
chmod +x apktool
我一开始没有注意,下载下来的apktool 是 apktool.txt 的
这个需要注意,重命名就可以了 mv apktool.txt apktool
然后可以测试一下 apktool -v 没有问题就会输出版本信息

apktool d /xx/xx.apk
其中d是decode的意思,表示我们要对xx.apk这个文件进行解码。那除了这个基本用法之外,我们还可以再加上一些附加参数来控制decode的更多行为
- -f 如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)。
- -o 指定解码目标文件夹的名称(默认使用APK文件的名字来命名目标文件夹)。
- -s 不反编译dex文件,也就是说classes.dex文件会被保留(默认会将dex文件解码成smali文件)。
- -r 不反编译资源文件,也就是说resources.arsc文件会被保留(默认会将resources.arsc解码成具体的资源文件)。

反编译过程中,会生成一个1.apk的缓存文件,有时反编译失败,删除它再试试

---重新打包 (我只是简单修改了 app name)
在刚反编译的目录 apktool b app -o slack.apk 将反编译出来的文件重新在当前目录打包成了新的apk,这apk是未签名的,不能安装到机器上(提示解析包错误)
使用命令jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 签名文件名 -storepass 签名密码 待签名的APK文件名 签名的别名 给apk签名。
其中jarsigner命令文件是存放在jdk的bin目录下的,需要将bin目录配置在系统的环境变量当中才可以在任何位置执行此命令。
签名之后的APK文件现在已经可以安装到手机上了,不过在此之前Android还极度建议我们对签名后的APK文件进行一次对齐操作,因为这样可以使得我们的程序在Android系统中运行得更快。对齐操作使用的是zipalign工具,该工具存放于<Android SDK>/build-tools/<version>目录下,将这个目录配置到系统环境变量当中就可以在任何位置执行此命令了。
将export PATH=${PATH}:/xxx/build-tools/23.0.2 添加到自己用户目录的.bash_profile中
命令格式如下:

zipalign 4 New_Demo.apk New_Demo_aligned.apk

其中4是固定值不能改变,后面指定待对齐的APK文件名和对齐后的APK文件名。运行这段命令之后就会生成一个New_Demo_aligned.apk文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值