Android反编译apk

简介: 总的来说就是先将apk文件解压,得到.dex文件,然后将.dex文件转为.jar文件,最后将.jar转为.java文件(就是将.jar文件中的.class文件转为.java文件)

总的来说就是先将apk文件解压,得到.dex文件,然后将.dex文件转为.jar文件,最后将.jar转为.java文件(就是将.jar文件中的.class文件转为.java文件)

安装Android Studio

安装JetBrains Toolbox,然后在里面找到Android Studio就可以一键安装。
安装好后会下载SDK,设置代理(proxy)会加快下载。

1. 解压apk文件

为了获取源码和资源文件,需要解压apk,有两种方法,一种是使用apktool,一种是直接解压。直接解压能得到源码的.dex文件,但资源文件都是二进制文件,没法直接看,所以如果需要查看apk的所有文件,必需用apktool反编译,同时还要直接解压。

方法一:使用apktool反编译(得到的是.smali文件和可直接读的资源文件,如果要得到.dex文件,还要看方法二)

安装教程
反编译教程
使用apktool,会有一个将.dex转为.smali的过程
在这里插入图片描述
最终文件都会保存在smali和smali_classes2文件夹中
在这里插入图片描述

方法二:使用解压工具解压(得到的是.dex文件和二进制形式的资源文件)

我是用的BandZip,右键点击压缩包,直接解压就能得到apk中的文件,可以看到有classes.dex和classes2.dex文件
在这里插入图片描述

2. 将.dex文件转为.jar文件

1. 下载dex2jar

下载dex2jar,我下的是2.1版本
在这里插入图片描述

2. 开始转换

  1. 解压刚才下载的压缩包 dex2jar-2.1.zip 后,进入dex2jar所在文件夹 dex-tools-2.1 ,将刚才的两个dex文件放入该文件夹

在这里插入图片描述

  1. 在该文件夹下打开终端,例如可以在进入文件夹后,在地址栏输入cmd或者powershell然后回车

在这里插入图片描述
然后输入命令,因为我有classes.dex和classes2.dex两个文件,所以要输入两条命令,将两个文件都转换

.\d2j-dex2jar.bat .\classes.dex
.\d2j-dex2jar.bat .\classes2.dex

可以看到已经转换成功,产生了两个.jar文件
在这里插入图片描述

3. 将.jar文件转换为.java文件

在实际使用过程中发现jd-gui和Luyten反编译出来的.java文件会存在差异(Luyten的碰到了语法错误的情况),所以如果一个的结果有问题,可以试试用另一个

方法一:使用jd-gui(小文件可以,文件过多或过大可能会卡住,可以试试方法二)

1. 下载jd-gui

下载jd-gui,我使用的是Windows系统,所以下载 jd-gui-windows-1.6.6.zip

在这里插入图片描述
下载好后解压,得到 jd-gui-windows-1.6.6 文件夹

2. 开始转换

  1. 将刚才用dex2jar转出来的两个.jar文件放入 jd-gui-windows-1.6.6 文件夹

在这里插入图片描述

  1. 打开 jd-gui.exe ,点击 File->Open File...

在这里插入图片描述
选择一个jar文件,点击“打开”
在这里插入图片描述
可以看到jd-gui打开了jar文件
在这里插入图片描述
如果直接点击文件,是可以看到反编译的结果
在这里插入图片描述
如果想要保存成.java文件

- 点击 File->Save All Sources 可以将打开的这个jar包中所有的文件都转成.java文件
- 点击File->Save 可以将自己选中的某个文件转成.java文件

如果文件过多的话可能会转换失败(我转classes-dex2jar的时候程序卡住了,转不出来)
在这里插入图片描述

方法二:使用Luyten

1. 下载Luyten

下载Luyten,在Windows上使用就下载 luyten-0.5.4.exe
在这里插入图片描述

2. 开始转换

方法同jd-gui,两个的界面相似,都是通过 File->Open File...打开jar包
在这里插入图片描述
保存同理,Save As是转换选中的文件,Save All是转换整个jar包。
将保存的压缩包解压,就可以看到java文件了。

4. 总结

apktool反编译得到的除smali之外的所有文件和文件夹就是资源文件解压Luyten保存的源码压缩包就是apk的源码,将这些文件放在同一个文件夹中然后拿Android Studio打开,就能很方便的查看了。

目录
相关文章
|
移动开发 安全 Java
Android历史版本与APK文件结构
通过以上内容,您可以全面了解Android的历史版本及其主要特性,同时掌握APK文件的结构和各部分的作用。这些知识对于理解Android应用的开发和发布过程非常重要,也有助于在实际开发中进行高效的应用管理和优化。希望这些内容对您的学习和工作有所帮助。
1884 83
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
1150 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
前端开发 Java 编译器
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
685 36
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
|
存储 安全 数据库
Android对抗反编译
本文介绍了通过反编译谷歌APK进行学习与防护的实践。作者利用工具Apktool反编译APK,并使用signapk进行二次签名,掌握smali文件格式以增强对APK结构的理解。文章详细说明了如何通过代码检查APP名称、包名和图标的一致性,防止篡改;同时探讨了核心数据加密、伪装及classes.dex文件CRC值验证等方法,提升反编译难度。附带的工具类代码提供了获取应用名称、版本号、包名及图标等功能的具体实现。适合对安卓安全与反编译感兴趣的开发者参考。
406 0
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
721 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
Java Android开发 Windows
使用keytool查看Android APK签名
本文介绍了如何使用Windows命令行工具和keytool查看APK的签名信息,并提供了使用AOSP环境中的signapk.jar工具对APK进行系统签名的方法。
2976 0
使用keytool查看Android APK签名
|
Android开发
解决android apk安装后出现2个相同的应用图标
解决android apk安装后出现2个相同的应用图标
1585 2
|
Android开发
将AAB(Android App Bundle)转换为APK
将AAB(Android App Bundle)转换为APK
1128 1
|
Android开发 开发者
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
2896 1
|
Android开发
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
3103 0

热门文章

最新文章

  • 1
    为什么微信发送的APP安装不了,.apk转化为.apk.1
    2387
  • 2
    【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
    1150
  • 3
    Android历史版本与APK文件结构
    1884
  • 4
    Cocos2d-x 游戏开发-打包apk被默认自带了很多不必要的权限导致apk被报毒,如何在Cocos 2d-x中强制去掉不必要的权限-优雅草卓伊凡
    402
  • 5
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    685
  • 6
    【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
    1759
  • 7
    【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
    721
  • 8
    apk安装包EXE,mis程序打包后报毒的正确处理方式-千万不要再人傻钱多被骗-真正的合法途径的处理方式才是正确的-apk安装包EXE,mis程序如何处理-优雅草央千澈
    660
  • 9
    使用Kivy创建“Hello World”应用并打包成APK
    2791
  • 10
    使用keytool查看Android APK签名
    2976