Android APK反编译技巧全讲解

2023-11-15

Android APK反编译技巧全讲解

  • 导言:在我们安卓开发当中,我们不仅需要掌握基础的开发技能,也需要掌握软件的安全技能,这样才可以让我们的软件能够成为一款能够真正可以进行发布的软件,同时也可以让自己的核心技术不会被别人所盗取。
  • 首先我们应当了解的是,对于反编译我们一共需要三个工具,它们分别是:APKTool,dex2jar,和jd-gui。
  • APKTool:用于解析apk的res文件以及AndroidManifest.xml文件
  • dex2jar:用于把apk解压后生成的classes.dex文件解析为后缀为jar的文件,与下面的jd-gui工具联合使用则可以得到我们的核心Java代码
  • jd-gui:将上一步所得到的jar文件解析为Java文件,从而得到软件的核心代码

这就是反编译的核心流程,凡是没有被MD5算法加密,或者未被加固过的APK都可以利用这个方法来进行反编译破解。

 

第一步.来到官网下载APKtool

  • 网址:https://ibotpeaches.github.io/Apktool/install/

界面如下:

 

 我们需要把下载的两个文件都放在同一个文件夹下,这个文件夹可以自己进行选择或者新建,本人这里在E盘下创建了一个androidsafe的文件夹用于保存这个工具,点击第二个链接之后会出现如下界面:

 

 

第二步.将需要进行反编译的文件放到刚刚我们创建好的那个文件夹下

 

此时我们的E:/androidsafe文件夹下只有这三个文件,同时我们也需要把下载的第二个文件apktool-2.4.0.jar更改成apktool.jar,不然是无法运行这个工具的。同时把需要反编译的apk文件移动到这个文件夹下。

 

第三步.开始反编译

键盘输入win+r,进入cmd的windows命令行模式。

利用cd命令将命令行模式进入刚刚创建的这个文件夹下,

再输入:

apktool d 您拿到这个文件夹下的需要反编译的apk文件名.apk

 如下图所示:

这样我们的反编译过程就完成了。

我们再来看看刚刚我们所创建的文件夹就会多出一个名为appdebug的文件了

文件目录如下:


可以说是十分成功了。其中的res文件夹是程序当中的所有资源文件,smali文件夹下存放了程序所有的反汇编代码。apktool这个工具主要是用来解析资源res和资源AndroidManifest.xml的,除此之外的,我们还需要另外的工具来解析Java源码,利用下以下两个工具则可以用于解析Java源代码,它们分别是:dex2jar和jd-gui.

第四步.将apk文件解析为后缀为dex的文件

1.首先我们把刚刚用于解析的apk文件的后缀改为zip,然后随便用一个你已经安装过的压缩包软件把它解压就可以了

2.解压之后你会在解压之后的文件当中发现一个名为:classes.dex的文件,这样就把apk的dex文件得到啦!如下图所示:

第五步.利用dex2jar工具把dex文件解析成后缀为jar的文件

dex2jar的下载网址是:https://bitbucket.org/pxb1988/dex2jar/downloads/

1.下载到我们刚刚安装apktool的文件夹下,然后解压,更改解压后的文件名为dex2jar
2.将刚刚所得到的classes.dex文件剪切到dex2jar文件夹下,如下图所示:

3.打开命令行cmd模式,利用cd命令将目录切换到dex2jar的文件夹下,同时键入以下代码:

d2j-dex2jar.bat classes.dex

这个时候返回文件夹,立刻就可以看到在classes.dex文件夹下就多了个jar文件了。

第六步.将jar文件解析为Java文件

下面就来到最激动人心的一步,得到我们的Java文件啦!

首先下载jd-gui,网址如下:

https://github.com/java-decompiler/jd-gui/releases/

这里windows版本的就直接下载后解压,解压后点击后缀为exe的可执行文件打开就是了,再将jar文件拖进去就好啦!:
如下图所示:

反编译的步骤还是挺简单的,但是如果被加密后再进行反编译难度就大了。

 

 

posted @ 2019-05-14 19:52 Geeksongs 阅读( ...) 评论( ...) 编辑 收藏
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android APK反编译技巧全讲解 的相关文章

  • 若依框架针对不同用户使用不同样式判断

    在开发中 有时候会针对不同用户使用不同样式 如果使用权限判断符的话会出现 请设置权限的问题 这样我们可以导入若依框架原本的权限判断函数 import checkPermi checkRole from utils permission 权限
  • Hibernate4与hibernate3主要区别与版本不一致导致的错误

    Hibernate版本改动 Hibernate4的改动较大只有spring3 1以上版本能够支持 Spring3 1取消了HibernateTemplate 因为Hibernate4的事务管理已经很好了 不用Spring再扩展了 这里简单介
  • 为何大量网站不能抓取?爬虫突破封禁的6种常见方法

    转载自 https www cnblogs com junrong624 p 5533655 html 在互联网上进行自动数据采集 抓取 这件事和互联网存在的时间差不多一样长 今天大众好像更倾向于用 网络数据采集 有时会把网络数据采集程序称
  • FileZilla - The free FTP solution

    FileZilla The free FTP solution https filezilla project org index php https www filezilla cn 1 Overview The FileZilla Cl
  • JavaScript重写Symbol(Symbol.iterator)实现迭代器(2)

    重写数组for of底层用的迭代器 for of 底层用Symbol Symbol iterator 迭代器 arr 底层用Symbol Symbol iterator 迭代器 示例图 代码 h1 对象遍历重写iterator接口2 h1
  • python中class用法实例

    python中class用法实例 https blog csdn net u010551600 article details 79126911 该程序的作用是找到studet txt文件中 GPA最高的那名同学 并打印出他的信息 程序运行
  • 【机器学习】神经网络介绍【转】

    深度学习 神经网络介绍 1 神经元 2 激活函数 3 感知机与多层网络 4 误差反向传播 参考 周志华 机器学习 神经网络是由具有适应性的简单单元组成的广泛并行互连的网络 它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应 Koho
  • micropython驱动ST7789v 2.4寸液晶显示中文

    一 ST7789v介绍 ST7789v是小尺寸液晶中常用的驱动芯片 作者手里的是网上买的一块2 4寸液晶模组 接口 为SPI接口 网上能找到这个芯片的micropython驱动 这不是本文的重点 本文的重点是如何利用这个驱动 并使用字库的方
  • 记录禁用联想笔记本电脑的触摸板

    触摸板在笔记本打字的时候很容易误操作 于是要关闭 我的这台Lenovo 关闭触摸板方法很直观很简单 键盘最上面一排Fxx的按钮中 F6键上就画着触摸板的小图标 按下F6 就关闭 再按一次 就开启 可能有些电脑不是 只是记录我使用的这台的情况
  • 快速理解事件委托?

    捕获和冒泡允许我们实现一种被称为 事件委托 的强大的事件处理模式 如果我们有许多以类似方式处理的元素 那么就不必为每个元素分配一个处理程序 而是将单个处理程序放在它们的共同祖先上 示例代码
  • 图像&视频编辑工具箱MMEditing使用示例:图像抠图(matting)

    MMEditing的介绍及安装参考 https blog csdn net fengbingchun article details 126331541 这里给出图像抠图的测试代码 论文 Indices Matter Learning to
  • Android Layout设计

    public View onCreateView LayoutInflater inflater ViewGroup container Bundle savedInstanceState Now that CrimeListFragmen
  • 浅谈 one-stage 与 two-stage 目标检测方法

    由于目前实习及找工作的原因 博客更新的频率下降 而在面试过程中也发现 虽然论文是看过了 包括也有输出一些论文笔记 但是很多时候无法形成自己对该领域的一个概括性的认知 无法粗中有细 细中有粗 主要还是基本功不扎实 反应了自己在日常学习中的学习
  • 快速排序(qsort)

    快速排序 排序方法有很多种 选择排序 冒泡排序 归并排序 快速排序等 看名字都知道快速排序是目前公认的一种比较好的排序算法 快速排序的核心思想是二分法 在此 我以升序为例 首先 我们需要选取一个基准数temp 再通过循环比较 将比基准数小的
  • mysql安装版的下载与安装(windows)

    https blog csdn net heting717 article details 73497005 这是安装版 挺方便的
  • soft fork and hard fork

    https bitcoin stackexchange com questions 30817 what is a soft fork https blog csdn net chabuduoxiansheng1 article detai
  • 【OpenAI】《Zotero GPT

    Zotero GPT 如何调教你的GPT 此教程讲述了tag的代码构成 ZoteroGPT中tag的效果就有点像浏览器中的插件 Time Content 0 51 一个tag的基本组成 5 32 tag的工作原理 6 33 删除和新建tag
  • KVM-7、KVM 虚拟机创建的几种方式

    通过对 qemu kvm libvirt 的学习 总结三种创建虚拟机的方式 1 通过 qemu kvm 创建 2 通过 virt install 创建 3 通过 virt manager 创建 在使用这三种创建虚拟机前提是 宿主机必须支持
  • 数据可视化——seaborn(一)

    数据可视化 seaborn 二 简介 seaborn这个库是基于matplotlib并且数据结构与pandas统一的python制图库 seaborn提供了一个高级界面 它是在matplotlib上进行了更高级的API封装 因此使得制图更加
  • Python学习笔记之os.walk()函数

    我们使用os listdir 函数来列出目录下的所有文件和目录放入一个列表进行返回 但是listdir 函数不可对目录的子目录进行扫描 print os listdir 输出 boot dev home proc run sys etc r

随机推荐

  • 前端和后台数据交互总结

    web服务器应用程序 apache tomcat nodeJs Nginx IIS 后台语言 php java net nodeJS 数据库 Mysql SqlServer Oracle 后台mvc ssh ssm 前台mvc js jsp
  • TensorFlow索引与切片语句

    学习课程 1 Basic indexing a tf ones 1 5 5 3 创建tensor a 0 0 结果是5 3的tensor a 0 0 0 结果是1 3的tensor a 0 0 0 1 结果是一个数1 2 Numpy sty
  • python汇总zip文件,压缩包的每个文件格式一样

    汇总zip文件 压缩包的每个文件格式一模一样 from zipfile import ZipFile import pandas as pd import os 打开文件 path r C Users Administrator Deskt
  • gcc/g++ 编译器使用简介

    gcc g 编译器使用简介 原地址 http blogold chinaunix net u3 109487 showart 2153853 html GNU CC 简称gcc 是GNU项目中符合ANSI C标准的编译系统 能够编译用C C
  • WireShark简介和抓包原理及过程

    WireShark 简介 WireShark是一个网络封包分析软件 其功能是记录网络封包 并尽可能显示出最为详细的网络封包信息 WireShark使用WinPCAP作为接口 直接与网卡进行数据报文交换 通俗理解 一个记录网络封包软件 你可以
  • python怎么调用另一个py文件的变量_Python中py文件引用另一个py文件变量的方法

    最近自己初学Python 在编程是遇到一个问题就是 怎样在一个py文件中使用另一个py文件中变量 问题如下 demo1代码 import requests r requests get http www baidu com r encodi
  • 【Linux】常用指令汇总

    目录 1 文件和目录操作 2 进程管理和查询 3 压缩和解压操作 4 系统信息和管理 5 远程和下载操作 6 用户和权限管理 7 时间和日期操作 8 运行和停止程序 9 其他操作 如果这篇文章对你有所帮助 渴望获得你的一个点赞 以下示例涵盖
  • 3S基础知识:VC6.0+MapX编程总结

    一 MapX的帮助 MapX的官方帮助文档是 MapX在线帮助 个人认为 这套文档过于简单 系统性偏差 与ArcEngine的帮助文档不可比 很多MapX的开发技巧在 MapX在线帮助 中查找不到 只能在互联网上搜索 本文试图从一个程序员的
  • 1V转5V芯片,三个元件即可组成完整的稳压方案

    1V低电压要转成5V的电压 需要1V转5V的芯片 由于1V输入 所以不需要指望能输出多大的电流 压差和1V的供电电压意味着供电电流也是无法做大的了 一般1V转5V的输出电流在0MA 100mA 一般60MA应用多 1V转5V电路的BOM物料
  • [LeetCode]202. Happy Number(判断正整数是不是Happy Number)

    202 Happy Number 原题链接 Write an algorithm to determine if a number is happy A happy number is a number defined by the fol
  • java.lang.Integer线程安全吗?

    java lang Integer线程安全 因为 private final int value 不可变
  • SQL实战5——统计活跃间隔对用户分级结果

    现有用户行为日志表tb user log 问题 统计活跃间隔对用户分级后 各活跃等级用户占比 结果保留两位小数 且按占比降序排序 注 用户等级标准简化为 忠实用户 近7天活跃过且非新晋用户 新晋用户 近7天新增 沉睡用户 近7天未活跃但更早
  • 华为机试HJ11 数字颠倒

    HJ11 数字颠倒 Python 题目 解题思路 代码 结果 题目 解题思路 1 输入 转字符串 倒序输出即可 python可以很取巧 代码 print input 1 结果
  • 使用Python批量转换彩色图片到灰度图片

    当涉及到图像处理和计算机视觉时 有时需要将彩色图片转换为灰度图片 一张一张使用PS等工具转换十分复杂且没有必要 今天介绍的这种方法用到了Pillow库 使用Pillow库来打开 加载并转换彩色图像 并将图像储存在另一个文件夹里 具体步骤如下
  • [春秋杯2023]Misc sudo(记CVE-2023-22809)

    对我来说还是有点难了 web方向的phpstudy那道题 不知道为什么 xss就是打不进去 第二道python反序列化还没有理解 所以就先发一道misc MISC sudo 记CVE 2023 22809 一 漏洞范围 sudo 1 8 0
  • 3.动态库的动态加载、错误处理、GDB调试

    库文件 代码的仓库 当运行a out时 a out是链接动态库的 于是a out和动态库都需要加载到物理内存中 但是 a out可能运行十分钟 但是需要用到的动态库却只需要使用1分钟 则资源浪费 所以引入动态加载的概念 当需要用动态库的时候
  • OceanBase介绍

    OceanBase是什么 OceanBase是一个支持海量数据的高性能数据库系统 实现了数千亿条记录 数百TB数据上的跨行跨表事务 由淘宝核心系统研发部 运维 DBA 广告 应用研发等部门共同完成 OceanBase解决什么问题 许多公司的
  • 编译驱动时报错:./arch/x86/include/asm/atomic64_64.h: At top level:

    在编译6ULL驱动的时候程序报错 base c 4 arch x86 include asm atomic64 64 h At top level arch x86 include asm atomic64 64 h 31 33 error
  • Java里的锁

    前言 锁 最初是人类为了保护自己的财产而发明的一种用钥匙才能开启的装置 防范的是外部人员 正常手段下没有钥匙是不能绕过物理锁的 而在程序世界里 锁的设计则是为了保护数据资源 但并不能防范外部攻击 只能算是内部协作的一个约束 无论内外部 只要
  • Android APK反编译技巧全讲解

    Android APK反编译技巧全讲解 导言 在我们安卓开发当中 我们不仅需要掌握基础的开发技能 也需要掌握软件的安全技能 这样才可以让我们的软件能够成为一款能够真正可以进行发布的软件 同时也可以让自己的核心技术不会被别人所盗取 首先我们应