一、安装

1、安装Apktool

方法1:普通下载安装

  • 下载Apktool
  • 下载Apktool安装包脚本

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。

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

  1. MAC下 Intellij IDEA GO语言插件安装及简单案例

    MAC下 Intellij IDEA GO语言插件安装及简单案例 GoLang专有IDE GoLand : http://www.jetbrains.com/go/ 下载地址 Intellij IDE ...

  2. Mac下图像标注工具labelImg的安装

    目标检测时需要对训练数据进行标注,标注工具为labelImg,其在Mac下的安装教程如下: # Install PyQt4, it must be this version brew install ...

  3. java在mac下开发环境_Java开发环境安装(MacOS、Windows)

    目录 Java for Windows安装步骤 下载JDK 2.进入主页面之后点击 3.进入到JDK10下载页面之后,将页面下拉到最下方,找到Java Archive 4.即跳转到所有的Java版本中 ...

  4. Mac下Ruby升级与Rails的安装

    也是醉了,网上查了半天一脸懵逼.然后自己动手试试 gem install rails瞬间命令行就没反应了,以为命令行挂了,但是一会儿报错说是没有权限. 好吧,那么来这个 sudo gem instal ...

  5. Mac下matplotlib显示中文(不用安装字体)

    matplotlib绘图中文显示小方格,网上一大堆方法要下载simhei.ttf字体,还要修改matplotlib设定balabalabala,我一步步照做了,结果,没用. 然后发现: matplot ...

  6. macbook自带python保存文件夹_在mac下查找python包存放路径site-packages的实现方法 在Mac系统下python如何安装第三方函数库?...

    mac怎么查看python的site-package位置世界上最伤心的事,不是你爱的人不爱你,而是他爱你过后,最后却不爱你. 可以通过find命令查看,参考demo如下: sudo find / -n ...

  7. Mac 下抓包工具安装使用

    Mac下抓包 阅读目录 1.安装XQuartz 2.安装Wireshark 3.启动Wireshark 4.选择网卡,开始抓包 5.监听抓取802.11无线帧 6.通过RVI抓取iPhone数据包 7 ...

  8. (转)Mac下MySql安装经历(含安装错误排查、卸载多种折腾)

    在安装mysql的时候,活活折腾我两天.结果终于被我折腾成功了-- 一开始我就放了个错误:我下了32位版本的mysql:mysql-5.5.8-osx10.6-x86.dmg  须知在mac下装的是6 ...

  9. Mac 下安装 Python-OpenCV Python-OpenCV 处理图像(一):基本操作

    首先确保已经安装了Python Mac 下可以直接使用 brew 来安装OpenCV,具体步骤如下: # add opencv brew tap homebrew/science# install o ...

最新文章

  1. 【jsp】兴唐第三十节课作业
  2. 数据库Mysql的学习(六)-子查询和多表操作
  3. cocos2d-x for android配置 运行 Sample on Linux OS
  4. 云盘运用了计算机技术,360云盘咋找出来
  5. html时间框自动更新,原生javascript实现自动更新的时间日期
  6. 数据结构与算法分析(二)——C++实现链表
  7. [No00005A]word多文档合一
  8. mysql从备份,mysql 主从同步范例-从同步备份步骤
  9. 量子化学计算机理,量子化学(理论化学的分支学科)_百度百科
  10. 一种基于SoC和阿里云的智能家居系统设计方案_家电研究报告
  11. 虚拟机内存管理之内存分配器
  12. 深度学习第一章(rnn)
  13. 【电子器件笔记4】电感参数和选型
  14. GVM(openVAS)中scan configs为空的问题解决
  15. jdom操作xml实战
  16. 基于 YOLOV3的交通车辆检测
  17. 计算机用户身份识别,计算机用户身份识别装置及使用方法与流程
  18. uniapp聊天室动画加载新消息
  19. linphone 手机上不能接听电话
  20. 【Machine Learning】机器学习之一些数学相关的知识储备

热门文章

  1. Java爬虫历险记 -- (1)爬取百度首页的logo
  2. 【BZOJ30472125】Freda的传呼机
  3. vue自定义html模板,vue中自定义html文件的模板
  4. 修复Ubuntu文件系统
  5. 【MM32F5270开发板试用】定制MicroPython及读取MPU6050数据到OLED1306
  6. JAVA_02 j2se j2ee j2me jse jee jme
  7. 《用事实说话》阅读心得
  8. Label Smoothing 标签平滑 (Label smooth regularization, LSR)
  9. 调度程序所用数据结构—Linux
  10. 酷派大观4 8970 刷android 4.4,极速达百兆! 移动4G版酷派大观4网络体验