MAC下Apktool、dex2jar、jd-gui的安装和反编译、回编译、重新签名简单使用

一、安装

1、安装Apktool

方法1:普通下载安装

macOS:
下载Mac 包装器脚本(右键单击,将链接另存为apktool)
下载apktool-2(在这里找到最新的)
将下载的jar重命名为 apktool.jar
将两个文件(apktool.jar&apktool)移动到/usr/local/bin(需要root)
确保两个文件均可执行(chmod +x)
尝试apktool通过cli 运行

$:cd /usr/local/bin
$:chmod +x apktool

方法2:使用homebrew安装

或者您可以通过Homebrew安装apktool :
如本页所述安装Homebrew
brew install apktool在终端中执行命令(无需root)。最新版本将安装/usr/local/Cellar/apktool/[version]/并链接到/usr/local/bin/apktool。
尝试apktool通过cli 运行
注意 -包装脚本不是必需的,但很有用,因此您不必java -jar apktool.jar一遍又一遍地输入。

brew install apktool
# 验证安装结果
apktool -version 

2、安装dex2jar

需要注意的是,假如使用dex2jar遇到
报错 com.googlecode.d2j.DexException: not support version。
则说明你安装的版本不兼容,所以尽量安装最新版本。

下载地址:https://github.com/pxb1988/dex2jar/tree/2.1-nightly-28

在这里插入图片描述
点击右下角的Latest按钮,选择最新版本进行下载;

在这里插入图片描述
最后点击下载zip文件,解压就OK了。我比较懒,直接把dex2jar放在了桌面,也方便我使用。

3、安装JD-GUI

官网下载地址:http://java-decompiler.github.io/

在这里插入图片描述
把app文件拖到Application文件夹下就ok了。


二、反编译流程

现在桌面上有一个demo.apk文件,我们复制一份,demo副本.apk
将副本文件名的后缀改为zip,即demo副本.zip

1. 获取xml反编译文件和smail代码

启动终端

$:cd /Users/apple/Desktop 
$:apktool d demo.apk

注意,demo.apk 要在控制台的当前目录下,因为demo.apk 在桌面,所以我先cd到了桌面的目录。

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

2. 反编译calss.dex文件

刚刚的demo副本.zip解压获得demo副本文件夹,进入文件夹后拷贝classes.dex(如果解压失败,换一个解压软件,不用系统自带的)

打开dex2jar 解压的目录,将classes.dex文件复制进去

由于我的dex2jar文件夹在桌面上,所以终端直接执行:

apple@fenglolodeMacBook-Pro ~ % cd /Users/apple/Desktop/dex-tools-2.1 
apple@fenglolodeMacBook-Pro dex-tools-2.1 % ./d2j-dex2jar.sh classes.dex

如果没有执行权限

apple@fenglolodeMacBook-Pro ~ % cd /Users/apple/Desktop/dex-tools-2.1 
apple@fenglolodeMacBook-Pro dex-tools-2.1 % chmod +x ./*
apple@fenglolodeMacBook-Pro dex-tools-2.1 % ./d2j-dex2jar.sh classes.dex

这个时候文件夹下回多出一个jar文件classes-dex2jar.jar

3. 查看jar文件代码

打开 JD-GUI ,将 jar 拖拽到 JD-GUI 区域就可以看代码了(该代码是混淆之后的)


三、回编译流程

以demo.apk通过 apktool d demo.apk 反编译生成的demo文件为例:
命令行窗口输入

apktool b demo

新生成的apk会在demo/dist/目录下面。若报错则输入apktool -r b name,资源文件不反编译,避免资源报错


四、apk 签名,打包

命令行窗口输入

jarsigner -verbose -keystore 签名文件名字 -signedjar newName.apk oldName.apk 签名文件名字
输入密钥库的密码短语:

备注:
签名文件名字:如abc.keystore
newName.apk:签名后的apk的名字,可自定义
oldName.apk:需要被签名的apk的名字,如我的案例中应为demo.apk

然后输入你的签名文件的密码就开始重新签名了,签名后的apk为你自定义的newName.apk。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值