android apk反编译 查看源码

2024-09-03 12:48

本文主要是介绍android apk反编译 查看源码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先请下载所需要使用的工具包
工具包有这三个工具:
工具介绍:

apktool

 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看

dex2jar

 作用:将apk反编译成java源码(classes.dex转化成jar文件)

jd-gui

 作用:查看APK中classes.dex转化成出的jar文件,即源码文件

接下来我们直接进入正题。

一、我们解压apktool工具包,可以看到这三个文件。apk反编译得到程序的源代码、图片、XML配置、语言资源等文件

这里写图片描述

我把apktool解压在我的E盘,然后我们把需要反编译的appdebug.APK放到跟apktool同一个目录里面。
接下来我们开始进入控制台,进入E:apktool目录。执行命令apktool.bat d -f appdebug.apk appdebug

我们来看图,
报错了,

Exception in thread “main” brut.androlib.AndrolibException: Could not decode arsc file
之后我百度了,是这样解释的。
apktool.jarl版本不是最新的导致。。
假如你没有报错是因为,上面的工具包链接是最新的apktool.jar。可以直接跳过这个错误。
1. APKTool官网推荐:http://ibotpeaches.github.io/Apktool/install/ 下载最新的apktool.jar。

  1. 将下载到的apktool_2.0.0rc4.jar文件改名为apktool.jar,然后替换掉老版本的apktool.jar

  2. 接下来就可以正常编译了。

重新编译,由于apktool.jar换成最新的版本。那么输入的命令也有变化。
格式为:apktool.bat d [-s] -f appdebug.apk -o appdebug ,这是我自己要编译的apk名称。你就输入自己要反编译的apk名称。
这里写图片描述
编译成功后:
这里写图片描述
说明获取成功,之后发现在文件夹下多了个appdebug文件,点击便可以查看该应用的所有资源文件了。

如果你想将反编译完的文件重新打包成apk,那你可以:输入apktool.bat b appdebug(你编译出来文件夹)便可,效果如下:
这里写图片描述

二、APK反编译得到源码
我们将生成的classes.dex文件放到 E:\apktool\dex2jar-0.0.9.15文件夹中
这里写图片描述

然后先定位到E:\apktool\dex2jar-0.0.9.15目录,执行命令:dex2jar.bat classes.dex会看到下面的图

这里写图片描述

我们看到生成了 classes_dex2jar.jar 文件,我们运行 jd-gui.exe打开该文件,就可以看到源码了
这里写图片描述

这是我今天了解的反编译。
原本以为能够看到别人的源码,由于大部分APK包都实现了混淆代码。我们所反编译的代码,不容易理解。

如果你看了之后,还有其他的问题,可以直接留言。

以上有借鉴 该作者的文章 链接

这篇关于android apk反编译 查看源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1133002

相关文章

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

MySQL查看表的最后一个ID的常见方法

《MySQL查看表的最后一个ID的常见方法》在使用MySQL数据库时,我们经常会遇到需要查看表中最后一个id值的场景,无论是为了调试、数据分析还是其他用途,了解如何快速获取最后一个id都是非常实用的技... 目录背景介绍方法一:使用MAX()函数示例代码解释适用场景方法二:按id降序排序并取第一条示例代码解