Android APK反编译教程

2023-11-19

一、反编译工具

1、apktool:获取资源文件,提取图片文件,布局文件,还有一些XML的资源文件。

2、dex2jar:将APK反编译成Java源码(将classes.dex转化为jar文件)。

3、jd-gui:查看dex2jar中转换后的jar文件。

二、注意事项

1、在反编译的代码看到a、b、c等等,这些是apk发布时进行混淆了,然后进行一些加密,或者使用第三方的加密平台,用的比较多的“爱加密”,有兴趣的也自行百度查看更加详细的介绍!apk进行混淆后里面的代码就没有必要再看了!

2、切勿拿反编译来做违法的事,比如把人家的APK重新打包后使用自己的签名然后发布到相关市场。

3、我们是参考别人的代码,而不是完全拷贝!!!切记!!

三、apktool

1.1 官方链接

链接:https://bitbucket.org/iBotPeaches/apktool/downloads/

1.2 下载安装

三种不同系统的安装教程:https://ibotpeaches.github.io/Apktool/install/
请添加图片描述

我使用的是Windows系统,这里我以Windows为例子来进行讲解如何安装。

1、先创建一个名为apktool的文件夹,用来存放apktool的文件,再根据官方链接下载最新的jar(apktool_2.6.0.jar),再将jar 重命名为 apktool.jar
请添加图片描述
2、在apktool的文件夹里创建apktool.txt文件,再点击wrapper script链接,进入脚本复制内容到apktool.txt文件里,完成后将apktool.txt更改为apktool.bat即可。请添加图片描述
请添加图片描述
3、将两个文件 apktool.jarapktool.bat 移动到你的 Windows 目录(通常是C://Windows)。如果你无权访问C://Windows,你可以将这两个文件放在apktool.txt文件,然后将该目录添加到你的环境变量系统 PATH 变量中。

4、win + r 再输入cmd 打开命令提示符,直接输入apktool 回车即可。

1.3 使用

在命令提示符里找到apk存放的目录,然后输入apktool.bat d Wi-Fi.apk(Wi-Fi指的是apk名) ,Enter回车即可。然后目录下就会出现同apk名的文件夹,里面就是我们所需的资源文件。
请添加图片描述

四、dex2jar

1.1 官方链接

链接:https://sourceforge.net/projects/dex2jar/files/

1.2 下载安装

1、下载最新dex2jar(dex2jar-2.0.zip)保存到文件夹里,并解压即可。
请添加图片描述

1.3 使用

1、将Wi-Fi.apk的后缀名改为Wi-Fi.zip并解压得到Wi-Fi文件夹。
请添加图片描述
2、在Wi-Fi文件夹里有一个classes.dex文件,将classes.dex文件复制到dex2jar-2.0文件夹里。
请添加图片描述
请添加图片描述
3、打开命令提示符,找到dex2jar-2.0目录,输入d2j-dex2jar.bat classes.dex 回车,这样我们就会得到一个classes-dex2jar.jar包,里面就是我们所需的java代码,但需要 jd-gui 打开来看。
请添加图片描述
请添加图片描述

五、jd-gui

1.1 官方链接

链接:http://java-decompiler.github.io/

1.2 下载安装

1、打开官方链接,找到 JD-GUI —> 点击Download —> 点击jd-gui-1.6.6.jar下载,保存到文件夹里,并解压即可。
请添加图片描述

1.3 使用

1、在jd-gui-windows-1.6.6文件夹里打开 jd-gui.exe ,再找到 classes-dex2jar.jar 打开就可以看到代码了。
请添加图片描述
请添加图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android APK反编译教程 的相关文章

  • 将数据从服务传递到活动

    我有自行运行的服务 服务自动启动 我有活动 在此 Activity 按钮中启动该方法DoIt Button setOnClickListener new OnClickListener public void onClick View v
  • 如何在 Android 中更改 Drawable 的颜色?

    我正在开发一个 Android 应用程序 并且我有一个从源图像加载的可绘制对象 在此图像上 我想将所有白色像素转换为不同的颜色 例如蓝色 然后缓存生成的 Drawable 对象 以便稍后使用它 举例来说 假设我有一个 20x20 PNG 文
  • Android 中的 Fragment-Fragment 通信

    我在Android编程方面处于初级水平 所以我需要你真诚的帮助 请任何人帮助我 我正在尝试使用片段构建滑动用户界面 所以我真正的疑问是 我有一个Fragment say FragmentA 它有一个TextView and Button在其
  • Android 图表[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个项目 其中有一些图表 图形 刻度图 烛台图和范围图 但问题是 没有该图表的库 我有烛台图的
  • socket.io xhr 在连接缓慢时出现错误(3G 移动网络)

    当我在 3G 移动网络 互联网连接速度慢 上测试我的真实聊天应用程序时 Socket io反复断开然后重新连接 我已经记录了原因 它说 xhr post error 这提高了 transport error 然后断开连接 我可以知道什么意思
  • 在 gradle 中,我应该排除分支下的所有依赖项还是只排除根就足够了?

    我已将以下自定义任务添加到我的build gradlefile 为了打印出依赖项的依赖项 This part is useful for finding conflict resolution s between dependencies
  • 退出设备上的 system.img

    我正在为我们部署给客户的设备 LG p509 Optimus 1 开发自动应用程序更新解决方案 我们可以控制这些设备 并且目前在它们上安装自定义内核 但不是完整的自定义 ROM 由于我们试图在设备上自动更新我们的应用程序 因此我们需要由我们
  • 华为手机“受保护的应用程序”设置及处理方法

    我有一台搭载 Android 5 0 的华为 P8 用于测试应用程序 该应用程序需要在后台运行 因为它跟踪 BLE 区域 我发现华为内置了一个名为 受保护的应用程序 的 功能 可以从手机设置 电池管理器 gt 受保护的应用程序 访问该功能
  • ExpandableListview OnGroupClickListener 未触发

    我正在关注这个 以编程方式折叠 ExpandableListView 中的组 https stackoverflow com questions 4314777 programmatically collapse a group in ex
  • 如何使用 SharedPreferences 保存多个值?

    我正在开发一个字典应用程序 在我的应用程序中 我假设用户想要保存最喜欢的单词 我决定使用共享首选项保存这些值 我知道 SQLite 和文件更好 但我坚持使用 SharedPreferences 所以继续使用它 下面是我的代码 Overrid
  • 如何通过 Android 按钮单击运行单独的应用程序

    我尝试在 Android 应用程序中添加两个按钮 以从单独的两个应用程序订单系统和库存系统中选择一个应用程序 如图所示 我已将这两个应用程序实现为两个单独的 Android 项目 当我尝试运行此应用程序时 它会出现直到正确选择窗口 但是当按
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 如何将样式应用于我拥有的所有 TextView? [复制]

    这个问题在这里已经有答案了 可能的重复 设计所有 TextView 或自定义视图 的样式 而不向每个 TextView 添加样式属性 https stackoverflow com questions 6801890 styling all
  • 如何在android中通过蓝牙向配对设备发送短信?

    在我的应用程序中 我想通过蓝牙发送和接收短信 我可以在列表视图中看到配对设备名称和地址的列表 但是当我尝试向配对设备发送文本时 什么也没有发生 在其他设备中没有收到文本 这是我向配对设备发送消息的代码 private void sendDa
  • Android 标记如何实现拖放?

    你好 我正在 Android 中开发 MapView 应用程序 我有三个标记 我希望稍后能够使用 Google Map API getlocation function 为了尝试一下 我想使用拖放功能移动标记 然后检查位置 任何人都可以通过
  • fs-extra:源和目标不能相同。 (科尔多瓦)

    我在使用 cordova 构建时遇到错误 Error Source and destination must not be the same 构建系统 Ionic ionic cli 4 10 1 ionic framework ionic
  • Android-dispatchTouchEvent 给了我一个 StackOverflowError

    这里我有一个带有 setOnTouchListener 的 ViewFlipper 它工作得很好 然后我膨胀 ReLayNewsItem 然后将其添加到 ViewFlipper 现在我希望 WebView web 监听触摸事件并将它们传递给
  • LifeCycleAware Fragment 中的片段生命周期事件

    我有一个生命周期感知片段和一个LifecycleObserver class public class MyFragment extends Fragment Override public void onCreate Nullable B
  • 如何访问我的 Android 程序中的联系人

    我正在制作一个短信应用程序 并且想要访问我的 Android 应用程序中的联系人 我想访问联系人 就像他们在实际联系人列表中一样 选择后 我需要返回到我的活动 在其中我可以向该人发送短信 或者是否可以访问存储联系人的数据库 我的代码如下所示
  • Android GetPTLAFormat 上的 Phonegap 错误

    我们正在开发一个使用 jQuery 移动和电话间隙的应用程序 一切似乎都工作正常 但是当在连接的 Android 手机上运行应用程序时 我们在 Eclipse logcat 中看到大量类似这样的错误 0 GetPTLAFormat inva

随机推荐

  • AttGAN从paper到code理解

    AttGAN Facial Attribute Editing by Only Changing What You Want 2017 CVPR 文章简介 本文研究面部属性编辑任务 其目的是通过操作单个或多个感兴趣的属性 如头发颜色 表情
  • RabbitMQ的安装和启动——windows版

    本章介绍如何在win10下安装 RabbitMQ 并启动 安装 Erlang 安装 RabbitMQ 启动 RabbitMQ 百度网盘下载 Erlang 和 RabbitMQ Erlang 网盘链接 RabbitMQ 网盘链接 结语 下载R
  • 搜索研发工程师需要掌握的一些技能

    文章目录 基础 语言 数据结构与算法 工程方面 搜索相关 搜索主要模块 电商搜索流程 分词相关 搜索召回 相似度算法 相关词推荐 排序相关 国美搜索 搜索算法工程师需要掌握的技能 基础 语言 大部分公司用的是Solr ElasticSear
  • 算法相关-经典排序算法(python实现)

    概述 插入排序 将未排序的元素同已排序的元素从后往前比较 带排序元素 a 被比较元素 b 如果a
  • 在Linux是使用libxml2---从安装到使用

    一 下载和安装LIBXML2 方法一 Libxml2是个C语言的XML程式库 能简单方便的提供对XML文件的各种操作 并且支持XPATH查询 及部分的支持XSLT转换等功能 Libxml2的下载地址是 http xmlsoft org 完全
  • 支撑区块链大规模商用,FISCO BCOS v3.0的那些“黑科技”

    注 文章转载自CSDN公众号 在2021年度金链盟生态大会上 全新的FISCO BCOS v3 0正式发布 该版本从架构 算法以及安全可控和隐私计算协同等方向进行了全面升级 满足数字经济时代对区块链系统可承载更大规模 更多场景 更广泛参与的
  • spring-xxx-xxx-0.0.1-SNAPSHOT.jar中没有主清单属性完美解决

    这种情况就是因为没有在SpringBoot中pom文件安装maven plugin 导致出现没有主清单属性问题 1 引入插件
  • JPush极光推送Unity插件iOS设备无法获取DeviceToken

    前言 最近在使用JPush进行极光推送 Unity插件GitHub地址https github com jpush jpush unity3d plugin 问题描述 但是发现了一个问题 按照官方文档操作 最终仍然无法获取DeviceTok
  • Error: unable to connect to node rabbit@localhost: nodedown

    刚安装上rabbimq 当我使用rabbitmqctl start app 启动rabbitmq的时候 出现了如下问题Error unable to connect to node rabbit localhost nodedown 然后我
  • vue-quill-editor复制粘贴问题

    需求是这样的 富文本可以具备粘贴文本的功能 但是不能粘贴图片到编辑框中 于是百度一下很快就有了解决方案 在data的文本编辑框配置中添加一个clipboard粘贴板 对其进行配置 方法中可以自觉将粘贴的图片转换为空的字符串 所以巧妙实现了此
  • 解决ubuntu打不开软件更新器和软件中心的问题

    打不开可能是软件源的问题 试试 sudo gedit etc apt sources list 然后把第三方软件源全部删除掉 重启软件更新器 如果能够启动 但有提示请检查网络连接的信息 那么点设置 在其它软件选项卡看情况取消勾选一些软件源
  • 解决报错:无法使用 JSX,除非提供了 “--jsx“ 标志。ts(17004)

    在 vue cli 5 0 6下创建项目 打开代码突然出现 无法使用 JSX 除非提供了 jsx 标志 之前都没问题 今天打开一看就报错了 网上说是 typescript的本地版本和你当前项目的版本不一致 请将本地的ts版本更新至项目需要的
  • 【BrokenPipeError: [Errno 32] Broken pipe】的解决方案

    BrokenPipeError Errno 32 Broken pipe 的解决方案 项目场景 问题描述 原因分析 解决方案 End 项目场景 调试 GitHub项目bddoia project Explainable Object ind
  • Docker一运行容器就退出:已解决

    Docker一运行容器就退出 已解决 文章目录 Docker一运行容器就退出 已解决 问题引入 解决方法 问题引入 想着挂载一个数据卷人挪活设置个端口号在外部访问一下 结果刚刚运行就停止了 如下图所示 就算是给它加上做一个死循环 持续输出
  • 函数防抖知识要点

    函数防抖 debounce JavaScript 中的函数大多数情况下都是由用户主动调用触发的 比如说点击 拖拽 改变浏览器尺寸 提交表单等 除非是函数本身的实现不合理 否则一般不会遇到跟性能相关的问题 但是在一些少数情况下 函数的触发不是
  • Ubuntu14.04终端配置:颜色、大小写不敏感、上键搜索字符串开头的历史命令、右键显示打开终端_ubuntu一站式配置教程(三)

    Ubuntu14 04终端配置 颜色 大小写不敏感 上键搜索字符串开头的历史命令 右键显示打开终端 ubuntu一站式配置教程 三 16单独列出来 文章目录 Ubuntu14 04终端配置 颜色 大小写不敏感 上键搜索字符串开头的历史命令
  • 判断是否是视频还是图片

    当发请求后拿到数据需要对数据进行处理 判断是视频就显示视频 图片显示图片
  • 3D游戏编程与设计作业4——使用skybox构建游戏场景

    步骤1 首先下载支持使用Fantacy Skybox FREE 的Unity版本 2021 3 步骤2 打开unity store 搜索Fantacy Skybox FREE 并进行下载 步骤3 下载成功后import对应的包到项目中 步骤
  • 多进程中fork

    linux下多进程 fork 这里只是简单实用fork 大家想了解具体 欢迎到我的gitee 给个star include
  • Android APK反编译教程

    目录 一 反编译工具 二 注意事项 三 apktool 1 1 官方链接 1 2 下载安装 1 3 使用 四 dex2jar 1 1 官方链接 1 2 下载安装 1 3 使用 五 jd gui 1 1 官方链接 1 2 下载安装 1 3 使