apktool for mac

news2024/11/28 13:43:26

安装步骤

1、Apktool下载

安装apktool

Apktool下载

  • macOS:
    1. Download Mac wrapper script (Right click, Save Link As apktool)
    2. Download apktool-2 (find newest here)
    3. Rename downloaded jar to apktool.jar
    4. Move both files (apktool.jar & apktool) to /usr/local/bin (root needed)
    5. Make sure both files are executable (chmod +x)
    6. Try running apktool via cli

    Or you can install apktool via Homebrew:

    1. Install Homebrew as described in this page
    2. Execute command brew install apktool in terminal (no root needed). The latest version will be installed in /usr/local/Cellar/apktool/[version]/ and linked to /usr/local/bin/apktool.
    3. Try running apktool via cli

Note - Wrapper scripts are not needed, but helpful so you don’t have to type java -jar apktool.jar over and over.

一、下载 apktool-2xxx.jar,重命名为apktool.jar

下载地址:iBotPeaches / Apktool / Downloads — Bitbucket

或者下载地址: Apktool - A tool for reverse engineering 3rd party, closed, binary Android apps.

或者下载地址:   Apktool v2.7.0 Released

二、apktool 文件下载地址

GitHub - renhaijun/Apktool: A tool for reverse engineering Android apk files

在工程script目录下的osx目录下直接复制下来就行:

Apktool/scripts/osx at master · renhaijun/Apktool · GitHub

在访达中前往“/usr/local/bin”这个隐藏目录

2、把 apktool.jar 和 apktool 这两个文件,复制或剪切到 /usr/local/bin 目录。设置权限。

cd /usr/local/bin
chmod +x apktool
chmod +x apktool.jar

输入 apktool ,查看是否展示apktool的相关信息,有则配置成功。

Macbook$ apktool
Apktool v2.7.0 - a tool for reengineering Android apk files
with smali v2.5.2-403e9037 and baksmali v2.5.2-403e9037
Copyright 2010 Ryszard Wiśniewski <brut.alll@gmail.com>
Copyright 2010 Connor Tumbleson <connor.tumbleson@gmail.com>

usage: apktool
 -advance,--advanced   prints advance information.
 -version,--version    prints the version then exits
usage: apktool if|install-framework [options] <framework.apk>
 -p,--frame-path <dir>   Stores framework files into <dir>.
 -t,--tag <tag>          Tag frameworks using <tag>.
usage: apktool d[ecode] [options] <file_apk>
 -f,--force              Force delete destination directory.
 -o,--output <dir>       The name of folder that gets written. Default is apk.out
 -p,--frame-path <dir>   Uses framework files located in <dir>.
 -r,--no-res             Do not decode resources.
 -s,--no-src             Do not decode sources.
 -t,--frame-tag <tag>    Uses framework files tagged by <tag>.
usage: apktool b[uild] [options] <app_path>
 -f,--force-all          Skip changes detection and build all files.
 -o,--output <dir>       The name of apk that gets written. Default is dist/name.apk
 -p,--frame-path <dir>   Uses framework files located in <dir>.

For additional info, see: https://ibotpeaches.github.io/Apktool/ 
For smali/baksmali info, see: https://github.com/JesusFreke/smali

3、反编译

将需要反编译的apk文件,复制或剪切到 /usr/local/bin 目录。

在终端输入“apktool d xxx.apk”,xxx为文件名。

MacBook-Pro bin % apktool d test.apk
I: Using Apktool 2.5.0 on test.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /Users/os/Library/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Baksmaling classes2.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...

反编译完成后,apk同目录下会生成一个文件夹。

其中d是decode的意思,表示我们要对apk文件进行解码。
还可以再加上一些附加参数来控制decode的更多行为:
·f 如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)。

apktool d -f test.apk
·o 指定解码目标文件夹的名称(默认使用APK文件的名字来命名目标文件夹。
·s 不反编译dex文件,也就是说classes.dex文件会被保留(默认会将dex文件解码成smali文件)。

apktool d -s test.apk
·r 不反编译资源文件,也就是说resources.arsc文件会被保留(默认会将resources.arsc解码成具体的资源文件)。

使用apktool 将APK 文件解析出来,这样能获取到 /res 目录下的资源文件。

4、解压文件
在apk文件上右键单击,解压文件。

解压后得到了若干个dex文件。它是java源代码经过编译,再通过dx工具打包而成。

5、使用dex2jar

jadx-gui下载地址:  https://github.com/ys1231/jadx

 复制出bin文件夹,把复制jadx-dev-all.jar文件放在jadx-gui目录下

点击jadx-gui 执行启动jadx-dev-all.jar, 把classes.dex文件托到gui中查看。

https://github.com/ys1231/jadx

或者

dex2jar下载

将dex文件复制到dex2jar所在的文件夹。

执行命令

 sh d2j-dex2jar.sh classes.dex

结果如下,提示“Permission denied”

MacBook-Pro dex2jar-2.0 % sh d2j-dex2jar.sh classes.dex
d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied

这是文件权限不足导致的。执行如下命令修改权限:

chmod 777 d2j_invoke.sh

然后再执行反编译命令。过程如下:

MacBook-Pro dex2jar-2.0 % chmod 777 d2j_invoke.sh
MacBook-Pro dex2jar-2.0 % sh d2j-dex2jar.sh classes.dex
dex2jar classes.dex -> ./classes-dex2jar.jar

6、

完成后,目录下出现了一个名为“classes-dex2jar.jar”的jar包。

怎么处理这个jar包呢?这个时候jd-gui就起作用了。

使用jd-gui

jd-gui下载

或者  jadx-gui下载地址:  https://github.com/ys1231/jadx

下载后得到一个tar文件。双击解压。

打开JD-GUI主程序,将jar包拖进主窗口。

或者  jadx-gui

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/626674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sqoop系列:sqoop(离线数据同步)开发案例

目录 Apache Hadoop生态-目录汇总-持续更新 1&#xff1a;Mysql(RDBMS)与Hive/HDFS数据传输 1.1&#xff1a;列出MySQL数据有哪些数据库&#xff1a; 1.2&#xff1a;根据mysql表结构创建hive表 1.3: RDBMS导入到hdfs &#xff08;1&#xff09;条件导入 &#xff08;2&…

cisp证书含金量如何网络安全渗透测试工程师主要工作是什么?前景如何?

sp&#xff0c;国家注册信息安全专业工作员&#xff0c;由中国信息安全测评中心认证&#xff0c;作为我国目前网络安全认证之一&#xff01;cisp属于国家测评中心授予&#xff0c;目前遭到企业认可。 CISP在大部分网络安全行业变成了应聘求职的必考的证书。在信息安全行业&…

CentOS 7安装 Postgres

零、前置条件 系统CentOS 7&#xff0c;并已联网&#xff0c;已安装gcc或者g编译器&#xff0c;GNU make版本3.80或以上&#xff0c;系统有至少一个除root之外的普通用户user gcc安装-参考链接查看make命令的版本——make --version更新make版本-参考链接postgresql的使用一般…

年薪百万的高性能计算工程师很难学吗?听OpenBLAS创始人怎么说 ..

想要成为一名高性能计算工程师&#xff0c;入门并掌握相关基础并不困难。 关键在于兴趣和自驱力&#xff0c;因为这是一个偏向底层开发的领域&#xff0c;需要扎实的C和C编程基础。 另外&#xff0c;数学能力也很重要&#xff0c;因为算法开发涉及一些基础的数学知识。对于大部…

【支付平台】java springboot 通过ip获取所在地城市信息

如果只是想知道如何通过ip获取所在地城市信息,可直接看第三步. 如果搭建自己的支付平台,异地支付限制是必不可少的一环.因为市面上一些非法份子,会使用我们平台生成的付款码进行欺诈行为.这也是我们必须杜绝的一种现象.因此限制异地支付就是其中一种手段. 在上一篇文章【三方支…

Golang context 实现原理与源码解读

0 context入门介绍 context是Golang应用开发常用的并发控制技术&#xff0c;主要在异步场景中用于实现并发协调以及对 goroutine 的生命周期控制&#xff0c;它与WaitGroup最大的不同点是context对于派生goroutine有更强的控制力&#xff0c;它可以控制多级的goroutine。 con…

【Android】WMS(一)Window的类型和标志

Window、WindowManager、WMS区别 Window&#xff1a; Window 是 Android 中的一个视图容器&#xff0c;代表整个屏幕或 Activity 的一部分。每个 Window 都有自己的 Surface 对象&#xff0c;Surface 对象具有绘制和渲染功能&#xff0c;可以显示 View 和其他元素。在 Android…

Vue 的基础知识 - 判断, 循环, 事件, 通信

目录 1. 了解 Vue 七大常用属性 2. 文本插值 2.1 v-bind 绑定元素 3. 判断 4. 循环 5. 事件 6. 双向绑定 7. 自定义组件 8. Axios 异步通信 8.1 什么是Axios 8.2 为什么要使用 Axios 8.3 Axios 的简单应用 8.4 Vue 的生命周期 1. 了解 Vue 七大常用属性 1. el 属性…

Qt扫盲-Bar柱状图理论

Bar柱状图理论 一、QAbstractBarSeries1. 常用设置2. 管理 BarSet 二、QBarSerie 和 QHorizontalBarSeries1. 垂直柱状图2. 水平柱状图 二、QPercentBarSeries 和 QHorizontalPercentBarSeries1. 垂直比例图2. 水平比例图 三、QStackedBarSeries 和 QHorizontalStackedBarSerie…

忠诚之源:如何获得铁粉?

文章目录 一、铁粉二、如何吸引和留住铁粉的想法2.1 了解你的目标铁粉2.2 提供有价值的内容2.3 建立良好的关系2.4 持续优化和创新 三、具体可采用的一些方法3.1 提供优质内容3.2 社交媒体互动3.3 创建独特的品牌形象3.4 提供特殊待遇和奖励3.5 参与社区和活动3.6 持续互动和更…

如何把视频语音转换成文字,分享给大家几个免费的方法!

在日常工作和学习中&#xff0c;有时需要将视频中的语音转录为文字&#xff0c;以便整理成文稿或进行其他用途。手动打字效率低下且耗时费力&#xff0c;那么如何快速将语音转换为文字呢&#xff1f;下面介绍几种简单高效的方法&#xff0c;其中之一是使用记灵在线工具。 方法…

PHP的流程控制语句

一.流程控制语句 1.if语句 PHP的if语句格式如下 if(表达式) 语句; 如果表达式的值为真&#xff0c;那么久顺序执行语句&#xff1b;否则&#xff0c;就会跳过该条语句&#xff0c;再往下执行。如果要执行的语句不指一条则用{}&#xff0c;{}被称为语句组&#xff0c;格式如…

Immer编写简洁的更新state逻辑

react官网推荐库use-immer&#xff1a;https://www.npmjs.com/package/use-immer 引入&#xff1a;import { useImmer } from "use-immer"; 优点&#xff1a; 简化代码: 只需要关注需要变动的部分&#xff0c;而 immer 本身将在后台处理其余部分。学习成本和替换代…

双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的实践应用

查看原文>>>双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的实践应用 目录 第一讲、DNDC模型介绍 第二讲、DNDC初步操作 第三讲、遥感和GIS基础 第四讲、DNDC气象数据 第五讲、DNDC土地数据 第六讲、DNDC土壤数据 …

【C语言】算法学习·Dijkstra算法详解

目录 Dijkstra算法设计 Dijkstra算法简介 Dijkstra算法的基本思想 Dijkstra贪心策略 完美图解 伪代码详解 完整代码 算法解析及优化拓展 ​使用优先队列的完整代码 Dijkstra算法设计 Dijkstra算法简介 Dijkstra算法是解决**单源最短路径**问题的**贪心算法** …

2021年国赛高教杯数学建模C题生产企业原材料的订购与运输解题全过程文档及程序

2021年国赛高教杯数学建模 C题 生产企业原材料的订购与运输 原题再现 某建筑和装饰板材的生产企业所用原材料主要是木质纤维和其他植物素纤维材料,总体可分为 A&#xff0c;B&#xff0c;C 三种类型。该企业每年按 48 周安排生产&#xff0c;需要提前制定 24 周的原材料订购和…

如何在 javascript 中按属性值查找数组中的对象

文章目录 使用 find() 方法按属性值在数组中查找对象使用 filter() 方法按属性值查找数组中的对象使用 JavaScript for 循环按属性值查找数组中的对象使用 JavaScript for...in 循环按属性值查找数组中的对象 数组指的是值的有序列表&#xff0c;每个值称为由索引指定的元素。 …

这所西安的985专硕爆冷,保护一志愿,过线即上岸!

本期为大家整理热门院校“西北工业大学”的择校分析&#xff0c;这个择校分析专题会为大家结合&#xff1a;初试复试占比、复试录取规则&#xff08;是否公平&#xff09;、往年录取录取名单、招生人数、分数线、专业课难度等进行分析。希望能够帮到大家! –所有数据来源于研招…

Plot、Scatter、Subplot函数用法

目 录 一、Plot()函数 二、Scatter()函数 三、Subplot()函数 一、Plot()函数 格式&#xff1a;matplotlib.pyplot.plot(x,y,format_string.**kwargs) 说明&#xff1a; x:x轴数据&#xff0c;列表或数组&#xff0c;可选(注&#xff1a;当绘制多条曲线时&#xff0c;不能省…

IT 系统巡检必须关注的指标总结

1. 系统整体架构 以下内容作为基本 IT 系统信息被首先调查记录&#xff0c;供分析参考使用。 ● 网络设备配置 ---设备型号, IOS 版本, 模块型号和数量,用途 ● 存储系统配置 ---设备型号, IO 带宽, Cache 容量&#xff0c;磁盘数量&#xff0c;接入模式&#xff0c;存储容…