jadx 反编译apk

引子

承接我的上一篇文章Android ClassyShark vs ApkTool,感谢读者@weishu的提醒,jadx是我遗漏的一个非常好用的android反编译gui工具。下面就来介绍下jadx工具。

首先给出jadx的github地址

使用方式

其实github上已经给出了很详细的使用说明。但是作者这里形式性地解读下吧(- -|)。

1.安装

依次运行以下命令:

git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist

主要是拉下来jadx的git主工程,然后跑对应的gradle task。之后会生成运行脚本,大概就是多出了这个目录

1.运行

cd build/jadx/
bin/jadx -d out lib/jadx-core-*.jar
#or
bin/jadx-gui lib/jadx-core-*.jar

以上命令是git给出的运行示例,主要就是反编译jadx源码的一个jar包。

由于之前文章对比classyShark 和apktool时用的是淘宝apk,那么这里继续用淘宝apk,便于三者的横向比较。

bin/jadx-gui taobao.apk

当然如果你不喜欢使用命令行外加找文件路径,你可以直接双击下图脚本文件即可

会弹出以下界面,对应选中你想反编译的.dex, .apk, .jar or .class即可(可以看到支持的格式还是很丰富的,赞)。

选中淘宝apk,并且反编译完成后,结果如下:

可以看到结果中即反编译了资源文件和源码,这个效果对比,apktool+dex2jar+jd-gui这三个工具集来说操作简便了太多。

结果横向对比(classyshark,apktool+dex2jar+jd-gui)

主要就是来对比下反编译后源码的可读性。同样选用com.taobao.allspark包下的AllsparkLoader来进行对比,用jadx反编译后的结果为:

我们可以看到可读性非常高,要是去掉混淆的影响,已经很接近源码了!!!(细心的读者可以发现该gui还包含了一部分编译器的功能,很实用)

另外几个很赞的功能介绍

1.支持全局class查询

2.支持全局text查询

3.支持导出gradle工程(你可以用as直接看反编译的工程了)

那么我们最终看看在as中打开导出工程后的结果:

很赞对不对

总结

看了以上之后,我们就来说下jadx对比classyshark和(apktool+dex2jar+jd-gui工具集)的优劣势吧。

优点:

1.操作方便快捷,一步到位

2.有较为完善的gui界面,带有较多实用功能

3.反编译代码可读性高

缺点:

1.没有classyshark类似的方法总数统计以及图形化分布界面

2.对比apktool直接反编译出来的资源文件有相应的缺失(这个有心的童鞋可以自己尝试下,这里就不给截图了)

总体来说jadx还是你反编译工具的最佳选择,当然有些时候可能还是需要你去配合使用,毕竟现在看来三者还是各有优劣的。

时间: 2024-10-21 14:44:22

jadx 反编译apk的相关文章

反编译apk工具,apk反编译工具Jadx的使用

Android初学者会使用其他人的apk,这样能知道别人是如何编写的,在知道别人是如何编写的前提下需要一款能实现反编译软件,再把软件反编译出来查看其中的代码. 如何使用反编译apk工具? 步骤一.打开Androidfby中的Android反编译工具,然后进行反编译,几维安全提醒一定要选中你要反编译的apk,此时就会得到xml.dex文件等.还可以通过解压文件的形式,但有一处弊端就是不能保证xml文件正常显示,所以建议结合一起使用. 步骤二.打开被反编译过后的文件夹然后找到classes.dex,

利用开源项目jadx反编译Android应用

利用开源项目jadx反编译Android应用 利用Github开源项目jadx可以直接对 .dex, .apk, .jar, .class 类型的文件进行直接反编译 对比之前 apktool(解包apk) + dex2jar(将.dex转换成.jar) + jd-gui (查看.jar文件)反编译三件套, jadx的优点在于: 1. 可以一行命令直接反编译恢复出.java文件 命令: jadx -d out calc.apk 需要先把apk拷贝到bin目录下, 如图:  2. 可以一行命令直接以

WebView使用详解(一)——Native与JS相互调用(附JadX反编译)

前言:念念不忘,必有回响,永远坚持你所坚持的! 一直在用WebView,还没有系统的总结过它的用法,下面就系统的总结下,分享给大家 一.基本用法 1.加载在线URL void loadUrl(String url) 这个函数主要加载url所对应的网页地址,或者用于调用网页中的指定的JS方法(调用js方法的用法,后面会讲),但有一点必须注意的是:loadUrl()必须在主线程中执行!!!否则就会报错!!!.注意:加载在线网页地址是会用到联网permission权限的,所以需要在AndroidMan

反编译apk 修改 合成

韩梦飞沙  韩亚飞  [email protected]  yue31313  han_meng_fei_sha 反编译apk帮助文档 准备工具 dex2jar(dex转换jar工具),下载地址: http://dex2jar.googlecode.com/files/dex2jar-0.0.9.15.zip apktool.jar(获取apk资源文件.注册文件.so库等),下载地址:http://android-apktool.googlecode.com/files/apktool1.5.2

centos反编译APK包

centos反编译APK包 实验目的 线上linux上传游戏包,PHP调用反编译命令解包 实验环境 centos6.4 Linux localhost.localdomain 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 2212:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux nginix1.8.0 php5.4 mysql5.5 操作步骤 1.rqm -ql | grep java 2.yum -y install ja

Android反编译apk(一)

为什么反编译: 做为个人开发,有时候看到精美的UI效果,好玩的功能,是不是有想可以参考学习的冲动.反编译android的apk,就是从apk中把资源(如图片,音乐,布局文件等等),源代码. 推荐阅读: 对于反编译apk,请先阅读文章<<反编译Android应用>>,<<Android APK反编译就这么简单 详解(附图)>>,好好看,看完自己下载几个apk试试,应该就对反编译apk心里有个底了. 我的笔记: (1).相关软件: dex2jar------将a

反编译APK的方法;

一.反编译工具: 百度云分享资料:http://pan.baidu.com/s/1pLqw6dd: 一共有三个工具分别为: 1,apktool: 用来获取apk中的布局资料图片文字等资料: 2.dex2jar: 将apk的二进制文件转化为jar文件: 3.jd-gui: 查看jar文件: 二.反编译过程: 1.将下载的压缩包分别解压: 分别将各个文件夹命名为apktool.dex2jar.jd-gui;<纯粹为了方便,也可以不改名> 2.将要编译的apk文件放到apktool文件夹下:同时打开

Mac环境下反编译apk

0,工具汇总 我们反编译apk主要使用以下三个工具 apktool:用于获取资源文件 dex2jar:获取源文件jar包 JD-GUI:反编译源文件jar包查看源代码 找这些工具时折腾了我点时间,现在把我找到的最终可用的版本都放百度云了.到下面链接下载: http://pan.baidu.com/s/1qWDmf2O 1,apktool获取资源文件 apktool其实不止一个文件,其中包含aapt,apktool,apktool.jar三个文件, 最终我们调用的命令行都是apktool的,另外两

用apktool批量反编译apk文件

写在前面的话 这个是一个十分简单的脚本,非常简单.为什么要写,因为我是来骗分数的. 应用场景 主机上有一堆APK文件,是按照类别分好的,现在用apktool 反编译它们,然后在按照类别和apk的名字来存储它们 如图所示 实现 要使用这个脚本,你需要安装一下apktool.注释已经很详细了,希望可以有用.当然,这个用python实现的,你也可以写个shell脚本. #!/usr/bin/env python # coding=utf-8 ''' @author : chicho @date : 2