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

相关文章

Linux中查看操作系统及其版本信息的多种方法

《Linux中查看操作系统及其版本信息的多种方法》在服务器运维或者部署系统中,经常需要确认服务器的系统版本、cpu信息等,在Linux系统中,有多种方法可以查看操作系统及其版本信息,以下是一些常用的方... 目录1. lsb_pythonrelease 命令2. /etc/os-release 文件3. h

java 恺撒加密/解密实现原理(附带源码)

《java恺撒加密/解密实现原理(附带源码)》本文介绍Java实现恺撒加密与解密,通过固定位移量对字母进行循环替换,保留大小写及非字母字符,由于其实现简单、易于理解,恺撒加密常被用作学习加密算法的入... 目录Java 恺撒加密/解密实现1. 项目背景与介绍2. 相关知识2.1 恺撒加密算法原理2.2 Ja

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹