Android反编译原理、教程及常用工具

Android反编译工具 本文介绍了Android反编译的基本过程,使用的工具,重新打包,重新签名。如何通过一个apk包得到它的源码,其中涉及到几个重要的工具软件,比如dex2jar、jd-gui、apktool,不仅介绍了它们的使用示例,还提供了下载地址。 阅读详情

参考博文:https://blog.csdn.net/dongheli/article/details/91952121 (多种环境反编译)
https://blog.csdn.net/aa464971/article/details/83346953
https://blog.csdn.net/qq_40606798/article/details/88815361
https://blog.csdn.net/qq_35070105/article/details/82753656

本文基于window环境

常用工具CSDN下载:https://download.csdn.net/download/qq_21480607/11457311

一、原理

学习反编译之前,建议先学习一下Apk打包的过程,明白打包完成后的Apk里面都有什么文件,各种文件都是怎么生成的。

博文地址:https://blog.csdn.net/qq_21480607/article/details/97912928

Apk技术也有非常多的技术可以学习,主要都是围绕着如何减小体积,如何提高打包速度展开,这里先不多说了。下面是一张基本的Apk文件结构图。
在这里插入图片描述
Apk文件本质上其实是一个zip包。直接拿解压工具解压就可以看到其中包含了什么。下面简单介绍一下Apk文件的结构。

AndroidManifest.xml:应用的全局配置文件

assets文件夹:原始资源文件夹,对应着Android工程的assets文件夹,一般用于存放原始的网页、音频等等,与res文件夹的区别这里不再赘述,可以参考上面介绍的两篇文章。

classes.dex:源代码编译成class后,转成jar,再压缩成dex文件,dex是可以直接在Android虚拟机上运行的文件。

lib文件夹:引用的第三方sdk的so文件。

META-INF文件夹:Apk签名文件。

res文件夹:资源文件,包括了布局、图片等等。

resources.arsc:记录资源文件和资源id的映射关系。

上面的截图中每个文件都是一个最基本的Apk
文件应该包含在内的。但是直接把Apk当做zip解压后的这些文件是没法直接阅读的,毕竟他们都是经过了build-tools打包工具处理过的。我们直接用文本编辑器打开这里面的Manifest文件看看。
在这里插入图片描述
反编译Apk的目的就是Apk拆成我们可以阅读的文件。通过反编译,我们一般想要得到里面的AndroidManifest.xml文件、res文件和java代码。

二、常用工具

Apktool
https://github.com/iBotPeaches/Apktool

可以反编译apk,也可以重新打包apk
下载地址:https://github.com/iBotPeaches/Apktool/releases
brew安装:brew install apktool
文档:https://ibotpeaches.github.io/Apktool/documentation
apktool d test.apk

dex2jar
https://github.com/pxb1988/dex2jar

可以将.dex文件反编译成.class文件并打包成jar
下载地址:https://github.com/pxb1988/dex2jar/releases
brew安装:brew install dex2jar
文档:https://github.com/pxb1988/dex2jar/wiki
d2j-dex2jar classes.dex

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

可以查看.class文件,用来查看dex2jar反编译出的jar
下载地址:https://github.com/java-decompiler/jd-gui/releases
brew安装:brew install jd-gui

jadx-gui
https://github.com/skylot/jadx

可以直接浏览反编译后的apk
下载地址:https://github.com/skylot/jadx/releases
在这里插入图片描述
uber-apk-signer
https://github.com/patrickfav/uber-apk-signer

可以对apk签名,支持V1、V2
下载地址:https://github.com/patrickfav/uber-apk-signer/releases
文档:https://github.com/patrickfav/uber-apk-signer/blob/master/README.md
java -jar uber-apk-signer.jar -a [apk路径] --ks [keystore路径] --ksAlias [alias名称]

java2smali
https://github.com/ollide/intellij-java2smali

IntelliJ IDEA和Android Studio的插件,可以将Java和Kotlin文件编译为smali
下载地址:https://github.com/ollide/intellij-java2smali/releases
在这里插入图片描述

三、教程

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

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

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

1.使用apktool反编译apk得到图片、XML配置、语言资源等文件
进入CMD命令行并切换到工具的所在目录
使用如下的命令运行apktool_2.0.1.jar反编译MMTS-release-1.0.2.apk

java -jar apktool_2.0.1.jar d -f E:\AndroidDevelopTool\Android反编译工具包\测试apk\MMTS-release-1.0.2.apk -o MMTS

这个命令是启动apktool_2.0.1.jar将位于【E:\AndroidDevelopTool\Android反编译工具包\测试apk\】目录下的"MMTS-release-1.0.2.apk"这个apk反编译,然后将反编译生成的文件存放到当前目录(apktool_2.0.1.jar所在的目录,也就是"E:\AndroidDevelopTool\Android反编译工具包"目录)下的一个【MMTS】文件夹中。这个文件夹的名字是可以随便取的,喜欢叫啥都行。
在这里插入图片描述
在这里插入图片描述
2.拿到.apk文件。将.apk文件,后缀改为 .zip 格式,解压.zip文件,获取图片、icon、等等文件
在这里插入图片描述
将下载好的反编译工具,解压。将dex文件拷贝到 反编译工具\lib\dex2jar 目录下
在这里插入图片描述在这个文件打开 cmd 控制台 .在控制台 输入 d2j-dex2jar.bat classes.dex 当执行完我们就可以在当前文件下看到classes-dex2jar.jar 文件
在这里插入图片描述
3.打开我们的 反编译工具\lib\jd-gui.exe 工具 将我们刚刚生成的calsses-dex2jar.bat 文件拖进gui.exe就可以看代码了
在这里插入图片描述
方法二、
1.同上
2.1、将.apk 文件直接拖进逆向助手 。选择 提取dex 点击操作,执行完生成dex 文件
在这里插入图片描述
2、将提取好的dex 文件 再次拖进逆向助手,选择 dex转jar 点击操作、当执行完就会自动帮我们打开了
在这里插入图片描述
方法三:
二、自动化工具汇总(一键反编译Apk)
1.谷歌提供的工具:android-classyshark
下载地址:https://github.com/google/android-classyshark/releases,下载下来之后是一个可执行的jar文件,win下或者mac下都只要双击即可运行。

功能:带有界面,一键反编译Apk工具,直接打开Apk文件,就可以看到Apk中所有的文件结构,甚至还集成了dex文件查看,java代码查看,方法数分析、导入混淆mapping文件等一系列工具。谷歌推出这个工具的目的是为了让我们开发者更清楚的了解自己的Apk中都有什么文件、混淆前后有什么变化,并方便我们进一步优化自己的Apk打包实现。
在这里插入图片描述

安卓反编译与保护机制分析 安卓应用安全防护与反编译技术分析摘要: 本文系统分析了Android应用反编译原理与安全保护机制。APK文件由classes.dex、resources.arsc等核心组件构成,可通过解压、dex2jar/JADX反编译工具链进行逆向分析。应对措施包括代码混淆(ProGuard/R8)、字符串加密、调试检测(/proc/self/status检查)、完整性校验(签名验证/SHA-256校验)等多层防护。特别提出Native层调试(ptrace)和运行时动态解密等高级技术方案,以及模拟器检测(Build. 阅读详情

相关推荐

反编译简单分析metasploit生成的安卓木马

apk反编译简单分析metasploit的安卓木马

Aiwin的博客 1711

android反编译原理解析

android反编译原理解析,包括: 1.反编译原理流程图 2.反编译需要的工具 3.下载地址以及使用方法 非常实用!

Android安卓反编译apk源代码,移动应用开发课程

https://blog.csdn.net/qq15577969/article/details/79515621 二、解压apk文件 举例我的apk文件是demo.apk,直接右键解压(也可以把后缀名apk改成zip再解压) 三、dex转换成jar 解压好的文件目录里有个classes.dex,这个classes.dex文件就是存放所有java代码的文件,我们将它拷贝到dex2jar-2.0目录下,打开cmd命令窗口,在dex2jar-2.0目录下执行命令:d2j-dex2jar classes.d.

yiqicsgo的博客 5842

译与反编译:深入理解原理

译和反编译是软件开发和逆向工程中的重要概念。通过深入理解译和反编译原理和工作流程,开发人员可以更好地理解和利用它们,提高程序的效率和安全性。它们在软件开发过程中起到关键作用,帮助程序员将高级语言代码转化为机器语言指令,并在需要时将机器语言指令还原为高级语言代码。通过分析目标代码中的存储和加载指令,可以推测出变量的定义和使用关系。它可以帮助分析和理解已译的程序,获取源代码的结构和算法,甚至进行修改和扩展。代码重构:代码重构是指对反编译得到的代码进行优化和重组,使其更接近原始高级语言代码的结构和风格。

UaCode的博客 463

Android常用反编译工具

常用反编译工具apktool :反编译apk,重构。dex2jar :反编译apk,解压 classes.dex 文件JD-GUI :将class文件反编译成java源代码AndroidKiller : 可视化、全自动的反编译译、签名;支持批量译APK。GDA:第一款国产交互式反编译器jadx:反编译利器,支持命令行和图形界面autosign:签名工具xposed:hook框架 apkto...

李玺 1万+

android反编译工具以及使用方式分步骤描述

步骤一:下载并安装 Apktool,可以从官方网站()下载最新版本的 Apktool。其中,app.apk 是要反编译的 APK 文件名,反编译后的文件将保存在 app 目录中。步骤三:修改反编译后的 Smali 代码,可以使用任何文本辑器进行修改。其中,app 是反编译后的目录名,重新打包后的 APK 文件将保存在 dist 目录中。步骤一:下载并安装 jadx,可以从官方网站()下载最新版本的 jadx。

资深全栈开发工程师 5310

安卓反编译原理,安卓签名与应用混淆

文章摘要:本文系统介绍了安卓应用反编译、混淆与签名的技术要点。反编译部分详述了APK反编译原理常用工具(jadx、apktool等)及使用场景;混淆章节讲解了代码混淆的作用、配置方法及自定义规则;签名环节阐述了签名原理、方案演进及生成步骤。三者共同构成了安卓应用安全防护体系,开发者可通过这些技术手段保护代码安全、防止恶意篡改。文章内容详实,包含具体操作示例和问题解决方案,对安卓开发者具有实用参考价值。

appron的博客 1066

安卓反编译机制,应用场景以及工具解析

随着移动应用的普及,安卓系统成为了市场上的主流操作系统之一。然而,安卓应用的源代码往往受到版权保护,开发者需要对其安全性进行维护。此时,反编译技术应运而生,成为保障应用安全的重要手段。 本文将详细介绍安卓反编译的机制、应用场景、相关工具及技术,并对其优劣进行分析。

wlred1980的博客 1226

Android 反编译三种方式

首先反编译别人的APK,主要是学习别人的实现逻辑,给自己一个思路。比较商业的APK也不会给你留下这个漏洞,一些核心的业务处理会在后台进行操作;本地的 APK 也会进行混淆加密等。 好了废话不多说,步入正题: 方法一:在线反编译 很简单方便的一个方法,只要打开网页,把APK放进入,就可以在线译了,不过速度比较慢,对于比较大型的APK还是不要用这种方法,容易出错。 网址:http://www...

li815705994的博客 3万+

全面探索安卓APK反编译工具与技巧

APK文件实际上是一个ZIP格式的压缩包,包含了Android应用程序的所有资源和译后的代码。一个标准的APK文件主要包含以下几个部分::Dalvik字节码文件,包含了应用程序的可执行代码。:译后的资源文件,记录了应用程序中的资源ID。res/:资源文件夹,包含了图片、布局、字符串等原始资源。:应用程序的清单文件,描述了应用的基本属性和组件信息。反编译是将已译的二进制代码转换回可读的源代码的过程。

weixin_31641077的博客 1413

Android APK反编译工具套装与实践

本文还有配套的精品资源,点击获取 简介:该文章介绍了Android APK反编译涉及的知识,包括APK文件结构、反编译原理常用工具如APKTool、aapt、签名工具以及图形化界面工具等。这些工具可以帮助开发者和安全研究人员分析、修改和理解Android应用。反编译过程中涉及的关键点如资源提取、签名验证以及法律伦理问题是作者着重强调的,同时提醒用户在使用反编译工具时要遵循...

weixin_36012152的博客 952

安卓与Java逆向反编译神器实战指南

本文还有配套的精品资源,点击获取 简介:逆向工程在软件安全、代码分析和二次开发中具有重要作用。本文介绍的“安卓与Java反编译神器”是一类高效工具,能够将Android APK中的Dalvik字节码还原为可读的Java源代码,帮助开发者深入理解应用内部逻辑。内容涵盖Android应用结构、主流反编译工具(如dex2jar、JD-GUI、Apktool、FernFlower、CFR)的使用方法、反编译原理、混淆代码处理及典型应用场景,如安全分析、调试、二次开发和学习研究。

weixin_28840811的博客 1743

linux反编译安卓,linux下反编译android apk

1、所需要的工具1)apktool,功能:反编译出apk所需要的资源文件和布局设置文件等,需要下载apktool1.5.2.tar.bz2 和apktool-install-Linux-r05-ibot.tar.bz2 这两个文件,并把解压后的文件放在同一个文件夹中。2)dex2jar,功能:反编译出jar文件,即apk的源程序文件的字节码,3)jdgui,功能:查看dex2jar反编译出的jar...

weixin_30320587的博客 985

Android逆向】爬虫进阶实战应用必知必会

安卓逆向技术是一门深奥且充满挑战的领域。通过本文的介绍,我们了解了安卓逆向的基本概念、常用工具、进阶技术以及实战案例分析。然而,逆向工程的世界仍然在不断发展和变化,新的技术和方法不断涌现。展望未来,随着安卓系统的不断更新和加固,逆向工程将面临更大的挑战。同时,随着人工智能和机器学习技术的发展,我们也许能够看到更智能、更高效的逆向工具和方法的出现。由于篇幅限制,本文仅对安卓逆向技术进行了介绍和案例分析。

陈橘又青的博客 1万+

Android apk安装包反编译——apktool工具

到这里你已经得到了一个修改后的 apk,但是这个译后的 apk 还无法安装到手机上,因为修改了文件,在安装时手机会对安装包里的签名进行比对签名,如果签名对不上说明apk被篡改了,就不会进行安装。一般 apk 都会进行加固,即对 Dex 加密,Dex 就是格式的文件里是 apk 的代码,加密后反编译是看不到项目主要代码的,从而保证了 apk 的安全性。使用 apksigner.jar 然后用 new.keystore 密钥库对 sign1.apk进行签名,最后生成 sign2.apk。

西凉的悲伤博客 2万+

掌握jadx:Android反编译工具的全方位教程

jadx是一个强大的Android反编译器,它可以从APK文件中提取并转换Dalvik字节码,恢复成接近原始Java源代码的格式。支持多种操作系统的用户界面,提供了简洁直观的图形界面(GUI)与命令行界面(CLI)两种操作方式。它还支持多种附加功能,例如搜索功能、条件过滤、以及对代码结构的清晰展示等。Dalvik字节码是Android平台应用程序的执行代码,它不同于传统的Java字节码,专门针对Android的Dalvik虚拟机进行了优化。

weixin_35835030的博客 1530

Android 反编译整理

Android 反编译需要用到以下几个工具: Apktool: 这个工具的作用是: It is a tool for reverse engineering 3rd party, closed, binary Android apps. It can decode resources to nearly original form and rebuild them after making s...

dongheli的专栏 5395

全面解析Android反编译工具及使用方法

本文还有配套的精品资源,点击获取 简介:在Android开发中,掌握反编译工具对于理解APK结构、分析代码、寻找安全漏洞和进行逆向工程至关重要。文章详细介绍了APK文件结构、反编译目的、常用反编译工具及其操作流程,并强调了在反编译过程中需要注意的法律风险和安全防护措施。 1. APK文件结构介绍 1.1 APK基础概念 APK是Android Pack...

weixin_42511832的博客 1605
上一篇: Android打包流程
下一篇: 编写程序, 输入两个3行3列矩阵,对输入矩阵做相乘操作,用行指针实现。
隔壁de小刘
博客等级 码龄12年 107粉丝 205原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隔壁de小刘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值