Android:反编译apk踩坑/apktool/dex2jar/JDGUI

需求描述

想要反编译apk文件,搜到了这篇博客:Android APK反编译就这么简单 详解(附图),非常有参考价值~但其中的工具下载链接都已404,而本杂鱼实际操作的过程中也出现了亿点点点点点点的问题,于是码了这篇博客记录一下~
工具包戳这里:myDemos,分支:deApk
工具包目录结构

使用&踩坑

根据Android APK反编译就这么简单 详解(附图)这篇博客,三个工具分工明确:apktool用于反编译apk中的布局、图片等静态资源,dex2jar用于反编译apk中的类文件,JDGUI用于查看dex2jar的编译结果——jar包中.class的源码。
以下是这三个工具的使用与踩坑详情:

apktool

首先记录操作过程,将需要反编译的apk文件拷贝到apktool文件夹下:
myApk.apk
在资源管理器地址栏输入“cmd”并回车,即可在当前文件夹下打开命令行(下文不再赘述):
在当前文件夹下打开命令行
执行以下命令:

apktool d -f apk名称.apk

apktool反编译结果
生成的apk同名文件夹即为反编译结果~命令行输出结果无报错即可。

// 以下为个人踩坑记录 ——————————————————————————————————————————————

Unsupported major.minor version 51.0

运行apktool,首先需要搭建java环境,而且最好安装一个版本较高的jdk,比如本杂鱼一开始安装了jdk1.6,报错“Unsupported major.minor version 51.0”,改装jdk1.9后未再报错~(这里碎碎念一下:后来在本地编译dex2jar,1.9版本太高报错,装回1.6又太低报错。。最后到oracle官网注册下载了jdk1.8,重新捯饬了环境才OK)所以建议直接使用jdk1.8~
本来想把jdk也上传git,由于超过了单个文件100M的限制,只能麻烦有需要的小伙伴自己下载啦~
oracle-jdk1.8下载,没有账号的话直接走注册流程就行,填一些信息即可;
不熟悉java环境变量配置的萌新戳这里:java环境变量 的配置与详解(全网最详细教程)

Exception in thread “main” brut.androlib.AndrolibException: Could not decode …

因java版本问题导致的报错解决了,定睛一看:还是有报错!度娘给出了解决方法:从apktool下载高版本的apktool.jar替换即可~(参考的原文链接在文末)

dex2jar

这个工具是用来反编译.class文件的,可以说是本杂鱼实际操作中最麻烦的一步了……由于最终解决报错的方案是直接从gitee仓库:dex2jar拉取源码,并根据README.md在本地编译后生成工具包(dex-tools-2.2)使用,之前的各种报错便感觉不必再细说。有时候一条道感觉走不通了,也许就应该尝试下转换思维另辟蹊径了哦!
总的来说,操作过程和apktool类似,先将需要反编译的apk文件拷贝到dex-tools-2.2文件夹下,然后在此文件夹执行以下命令:

d2j-dex2jar.bat -f apk名称.apk

PS:dex-tools-2.2中的脚本既有.bat格式又有.sh格式,应该也可以在Linux系统下使用(合理猜测)
dex2jar反编译结果
生成的apk同名-dex2jar.jar文件即为反编译结果~命令行输出结果无报错即可。

JDGUI

这是三个工具当中唯一最令人省心的了!T_T使用简便,no problem~
双击运行JDGUI文件夹下的jd-gui.exe,将dex2jar生成的jar文件拖入图形界面,或在界面进行操作打开jar文件即可。
双击运行jd-gui.exe

参考文档

[1] Android APK反编译就这么简单 详解(附图)
[2] 解决坑----Unsupported major.minor version 51.0
[3] 安卓逆向:apktool 反编译时报错 Exception in thread “main” brut.androlib.AndrolibException: Could not decode …

猜你喜欢

转载自blog.csdn.net/qq_36604536/article/details/129205848