Mac反编译APK

文章目录

  • 第一种方式: brew install
    • apktool 使用说明
    • dex2jar 使用说明
  • 第二种方式: 下载安装包
    • apktool 使用说明 (根据官方介绍没有操作成功,后续成功再更新这里)
    • dex2jar 使用说明
  • 安装 JD-GUI 查看jar包中的class文件
    • JD-GUI 使用说明

第一种方式: brew install

安装过程可能很慢,耐心等待即可,如果失败的话多次重试, 实在下载不了就考虑第二种方式

brew install apktool
brew install dex2jar

apktool 使用说明

cd Desktop
apktool d /Users/gerry.liang/Desktop/SpotifyAAM.apk

在这里插入图片描述

dex2jar 使用说明

  1. 直接把.apk后缀改为.zip 并解压得到 classes.dex
    在这里插入图片描述
  2. cd Desktop
  3. d2j-dex2jar /Users/gerry.liang/Desktop/SpotifyAAM/classes.dex
    在这里插入图片描述

第二种方式: 下载安装包

https://apktool.org/docs/install/ 官方介绍&下载地址
在这里插入图片描述

apktool 使用说明 (根据官方介绍没有操作成功,后续成功再更新这里)

  1. Download the Mac wrapper script. (Right click, Save Link As apktool)
  2. Download the latest version of Apktool.
  3. Rename the downloaded jar to apktool.jar.
  4. Move both apktool.jar and apktool to /usr/local/bin. (root needed)
  5. Make sure both files are executable. (chmod +x)
  6. Try running apktool via CLI.

https://github.com/pxb1988/dex2jar/releases/ 官方Github介绍&下载地址
[图片]

dex2jar 使用说明

  1. 直接把.apk后缀改为.zip 并解压得到 classes.dex 和 classes2.dex在这里插入图片描述

  2. 复制classes.dex 和 classes2.dex 到 dex2jar的目录下
    在这里插入图片描述

  3. 执行 dex2jar.sh 脚本生成 jar 文件

  4. cd /Users/gerry.liang/Downloads/dex-tools-v2.4

  5. sh d2j-dex2jar.sh classes.dex
    在这里插入图片描述

安装 JD-GUI 查看jar包中的class文件

这一步可选,你也可以直接用Android Studio打开jar包查看

https://github.com/java-decompiler/jd-gui/releases 官方Github介绍&下载地址
[图片]

JD-GUI 使用说明

在这里插入图片描述
在这里插入图片描述
这样就可以查看代码了。

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

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

相关文章

使用 mitmproxy 抓包 grpc

昨天在本地执行 grpc 的 quick start(python版本的),我了解 grpc 内部使用的是 HTTP2,所以我就想着抓包来试试,下面就来记录一下这个过程中的探索。 注意:我的电脑上面安装了 Fiddler Classic,…

微信小程序生命周期管理:从数据初始化到事件绑定

作为一个独立的应用开发平台,微信小程序提供了自己的生命周期机制,与我们熟悉的Vue.js框架有一些差异。掌握小程序生命周期的特点和使用技巧,对于开发高质量的小程序应用至关重要。深入理解和掌握小程序生命周期的使用技巧,将有助于我们构建出更加健壮和可维护的小程序应用。 小…

可视化大屏 - 项目1

文章目录 技术栈echarts 可视化需求分析代码实现 技术栈 flexible.js rem 实现不同终端下的响应式布局,根据不同屏幕宽度,自适配布局; html中引入index.js,可以改名为flexible.js;默认划分10份,可以自己修…

Django -- 模型层

模型和字段 一个模型(model)就是一个单独的、确定的数据的信息源,包含了数据的字段和操作方法。通常,每个模型映射为一张数据库中的表。 基本的原则如下: 每个模型在Django中的存在形式为一个Python类每个类都是dja…

C#的Thread.CurrentThread.IsBackground的作用

当一个线程,被设置为IsBackground true的时候,它就会放手,让主线程不用等,而主线程一退出,它就会退出。 为False时,则是要求主线程等待其执行完毕,它先退出,主线程再退出。 参考官方…

使用阿里云试用Elasticsearch学习:1.6 基础入门——排序与相关性

默认情况下,返回的结果是按照 相关性 进行排序的——最相关的文档排在最前。 在本章的后面部分,我们会解释 相关性 意味着什么以及它是如何计算的, 不过让我们首先看看 sort 参数以及如何使用它。 排序 为了按照相关性来排序,需…

Linux存储的基本管理

实验环境: 系统里添加两块硬盘 ##1.设备识别## 设备接入系统后都是以文件的形式存在 设备文件名称: SATA/SAS/USB /dev/sda,/dev/sdb ##s SATA, dDISK a第几块 IDE /dev/hd0,/dev/hd1 ##h hard VIRTIO-BLOCK /de…

代码随想录算法训练营第四十三天|1049. 最后一块石头的重量 II 494. 目标和 474.一和零

1049. 最后一块石头的重量 II 本题就和 昨天的 416. 分割等和子集 很像了,可以尝试先自己思考做一做。 视频讲解:https://www.bilibili.com/video/BV14M411C7oV https://programmercarl.com/1049.%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%…

Python性能优化:提升代码执行效率的秘诀

在Python编程中,性能优化是一个不可忽视的方面。无论是处理大数据集,还是构建需要快速响应的系统,高效的代码都是至关重要的。本文将讨论一些Python性能优化的关键策略,包括选择正确的数据结构、避免常见的性能陷阱以及使用并行计…

牛的学术圈(c++实现)

题目 由于对计算机科学的热爱,以及有朝一日成为 「Bessie 博士」的诱惑,奶牛 Bessie 开始攻读计算机科学博士学位。 经过一段时间的学术研究,她已经发表了 N 篇论文,并且她的第 i 篇论文得到了来自其他研究文献的 ci 次引用。 B…

Python常用算法思想--快速解决24点游戏案例【附源码】

算法的起源:欧几里德的《几何原本》中阐述的求两个数的最大公约数的过程。 算法的定义:解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表用系统的方法描述解决问题的策略机制。 算法的本质:算法是程序的灵魂,也是衡量一位程序员水平高低的最好参照物。…

SQLAlchemy 建立数据库模型之间的关系

常见关系: 一对多关系多对一关系多对多关系一对一关系 一对多关系(一个作者,多篇文章) ## 一对多关系,单作者-多文章,外键不可少 ## 外键(ForeignKey)总在多的那边定义,关系(relationship)总在单的那边定…

在国企特定的环境中,如何激励低效能员工?

导读: 总额高达4万亿元的巨额投资,曾经让国企在应对百年不遇的金融危机中交出一份靓丽的成绩单,然而随着“4万亿经济刺激措施”逐步退出,国企问题又开始暴露出来。 2012年度国内上市公司财务报告显示,国企成为亏损大户…

gitee代码上传同步指南(git操作)

1.下载安装git 最开始安装git,下载链接:CNPM Binaries Mirror 选择对应版本下载git即可 2.生成ssh公钥 电脑桌面右键,选择Open Git Bash here 需要注意,在git中复制粘贴功能和windows不同,它有两种方式&#xff…

解码零跑汽车2023年报:营收增速大幅滑坡,净亏42亿,如何讲故事

在2023年的新势力车企中,有这么一家低调崛起的品牌,并没有像蔚小理那样高调,但去年全年销量却反超小鹏汽车,晋升成为新势力车企中的销量第三名,它就是第四家登陆港交所上市的新势力品牌—零跑汽车。 不过,…

蓝桥集训之斐波那契前n项和

蓝桥集训之斐波那契前n项和 核心思想&#xff1a;矩阵乘法 左边求和 右边求和 得到Sn fn2 – 1 因此只要求出fn2 即可 #include <iostream>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;int n,m;int A[2][2] { …

【数据库】MySQL InnoDB存储引擎详解 - 读书笔记

MySQL InnoDB存储引擎详解 - 读书笔记 InnoDB 存储引擎概述InnoDB 存储引擎的版本InnoDB 体系架构内存缓冲池LRU List、Free List 和 Flush List重做日志缓冲&#xff08;redo log buffer&#xff09;额外的内存池 存储结构表空间系统表空间独立表空间通用表空间undo表空间临时…

学习记录:bazel和cmake运行终端指令

Bazel和CMake都是用于构建软件项目的工具&#xff0c;但它们之间有一些重要的区别和特点&#xff1a; Bazel&#xff1a; Bazel是由Google开发的构建和测试工具&#xff0c;用于构建大规模的软件项目。它采用一种称为“基于规则”的构建系统&#xff0c;它利用构建规则和依赖关…

6、【单例模式】确保了一个类在程序运行期间只有一个实例

你好&#xff0c;我是程序员雪球 在软件设计中&#xff0c;单例模式是一种常见的设计模式。它确保了一个类在程序运行期间只有一个实例&#xff0c;并提供了全局访问该实例的方式。单例模式在许多场景中都有广泛的应用&#xff0c;例如共享资源管理、数据库连接、日志记录器等…

ES6学习(五)-- Module 语法

文章目录 Module 语法1.1 痛点介绍(1) 异步加载(2) 私密(3) 重名(4) 依赖 1.2 解决方法(1) 解决异步加载问题(2) 解决私密问题(3) 重名解决方法(4) 解决依赖问题 1.3 模块化使用案例 Module 语法 之前js 出现的某些痛点&#xff1a; 在script 中引入的变量名不可以重复&#…