APK反编译那些事儿

前戏

最近放假回家想着搞些好玩的东西让寒假过得有意思点(越来越发现自己的执行力是真的亟待提高),某日无聊打开我航掌上教务,发现突然不能运行了,what fuckkkkk!!!。想想劳资的成绩和课表以后就远离自己了那叫一个心痛啊(手动滑稽-*-,虽然找不到了更好hhhhh)。想着自己多少还是有点Android开发经验(17年的大创结题成果之一就是自己做的一个APP,是关于人脸表情识别的,当然不可能拿硬核去搞。。。纯软件实现,大家要是偶兴趣的话我后面整理(瞎jb整)一下开源出来,主要适合新手入门食用,大婶们还是让我在夹缝里苟活一会儿哈),就寻思着能不能搞到这apk发布之前的源码(当然我也知道那堆开发者发布之前肯定要对代码进行各种各样的装饰,大家都心知肚明嘻嘻嘻嘻),也算是参考下“优秀作品”,说干就干,下面我主要总结一下自己这段心路历程(看到最后整出来的东西我一口老血差点就喷出来了。。。)
在这里插入图片描述


工具准备

  • jdk安装及环境变量配置
        操作前提
  • apktool下载
        作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
  • dex2jar工具下载
        作用:将apk反编译成java源码(classes.dex转化成jar文件)
  • jd-gui-widows工具下载
        作用:查看APK中classes.dex转化成出的jar文件,即源码文件

使用方法

1、jdk下载安装及系统环境变量配置

jdk安装官网
界面如下

在这里插入图片描述
大家选择自己系统适用的版本即可(当然首选最新的呀哈哈哈哈)
下载安装之后就是环境变量配置,这里专门做一个介绍,右击我的电脑->属性->高级系统设置在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击进入环境变量修改界面,这里上半部分是用户环境变量,这个部分我们不做修改,主要修改系统环境变量部分,新建系统变量变量名 “JAVA_HOME” ,变量值为jdk安装目录,这里我在安装时选择默认路径,对应的目录即为 “C:\Program Files\Java\jdk1.8.0_201” (这里创建JAVA_HOME环境变量目的是方便后面两个环境变量变量值简洁些,当然也完全可以不创建,参看后续内容),找到系统变量中名为Path的环境变量,末尾处加上 “%JAVA_HOME%\bin” “%%JAVA_HOME%\jre\bin%\bin” 两个部分如下图所示在这里插入图片描述
修改之后点击确定即可,为了验证安装是否成功,我们打开命令行窗口分别输入java javac java-version,观察命令行输出结果,安装成功之后对应的输出大致如下图所示在这里插入图片描述
至此我们的java环境已经搭建完成,下面是时候真正下手解决问题了,盘它!

2、apktool下载安装与使用

下载链接镜像
下载完成之后我们会得到一个.jar文件(我下载之后文件名为apktool_2.3.4.jar),在这里插入图片描述
下载完成之后,我们通过命令行工具即可以实现对apk的反编译并获取图片、XML配置、语言资源等文件, “win+R” ,输入 “cmd” 进入命令行界面,将操作范围转移至我们的工作文件夹,这里我将所有的工作文件均存储在D盘,在这里插入图片描述
(命令行操作可以参考其他技术博客,此处不再详细介绍)
将我们要处理的.apk放置于相同文件夹,运行可执行文件apktool_2.3.4.jar,windows环境下执行jar文件的语句为

java -jar jar包名.jar

此处运行语句为

java -jar apktool_2.3.4.jar d -f D:\private\2019上半年\DECODE\TEST.apk -o ZSJW

在这里插入图片描述
运行之后结果大致如图所示,注意代码中的空格一定要保留,结尾处 -o ZSJW是为了制指定反编译之后资源文件的存储位置,最终生成一个名为 “ZSJW” 的文件夹在我们的操作文件夹中在这里插入图片描述
打开之后我们可以看到我们想找的一些资源文件以及 “AndroidManifest” 文件均在该文件夹中在这里插入图片描述
在这里插入图片描述

3、dex2jar工具下载与使用

dex2jar传送门
      dex2jar工具主要用于处理.dex文件,通过对classes.dex 文件进行处理,得到应用程序中的类文件。首先将目标应用文件TEST.apk后缀名改为.zip类型,解压之后得到的文件夹中会得到一个classes.dex文件(即java文件编译再通过dx工具打包而成的),通过将.dex文件转化得到.jar文件所需的操作即为dex2jar工具,解压下载得到的dex2jar-2.0.zip文件,将之前解压得到的classes.dex文件复制到dex2jar-2.0.zip解压之后的文件夹中,在命令行界面定位到文件夹内,运行命令

d2j-dex2jar classes.dex

即可将 “.dex” 文件转化为对应的 “.jar” 文件在这里插入图片描述
在这里插入图片描述

4、jd-gui工具使用

jd-gui下载地址
“jd-gui” 工具是将class反编译成java源代码的一个工具,在进行反编译时非常常用。下载之后解压的文件中有 “jd-gui.exe” ,运行之后将之前生成的 “.jar” 文件拖拽至软件运行界面即可得到java源码。
在这里插入图片描述

小结

经过今天一天的努力,尝试进行反编译的过程中间也是充满了各种奇葩毛病。。。真的是在家脑子不好用。这里也提醒大家,反编译并不是为了重新构建应用,而是为了让好代码中的书写习惯能够得到更多的应用。显然最终也没能解决应用的版本不兼容问题…但是这一路下来,自己也积累了一些反编译的经验(想起来上面还答应大家要把之前项目中的小应用开源,希望开学之后自己能勤奋些哈哈哈哈哈哈哈,暂且告辞!祝大家新年快乐/滑稽/滑稽)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值