首页
社区
课程
招聘
[分享]APK反编译工具JADX
发表于: 2020-5-31 17:14 9274

[分享]APK反编译工具JADX

2020-5-31 17:14
9274

JADX 是一个集成化的反编译开发工具,还可以将源文件导出为 Android Gradle 项目。有以下优点:

  • 图形化的界面

  • 拖拽式的操作

  • 反编译输出 Java 代码

  • 查看源码时直接显示资源名称,而不是像jd-gui里显示的资源ID

  • 导出 Gradle 工程

  • 支持.dex, .apk, .jar or .class

  • 反混淆

  • 支持代码跳转

  • 支持搜索文本,类


jadx 是一个开源项目,源代码:

https://github.com/skylot/jadx

对于 Mac 或者 Linux,使用 jadx-gui ,Windows 下就需要使用 jadx-gui.bat 了,双击可以直接运行,你可以选择一个 apk、dex、jar、zip、class、aar 文件。




JADX有如下优点:

(1)文本搜索

      点击 Navigation -> Text Search 或者 Navigation -> Class Search 激活它,并且 jadx 的搜索支持四种维度,Class、Method、Field、Code,我们可以根据我们搜索的内容进行勾选,范围最大的就是 Code ,基本上就是文本匹配搜索。

(2)查找引用

     比如想要找到我们想要的类和代码,那么可以直接使用 jadx 的搜索代码功能,找到我们需要查看的类或者代码,选中点击右键,选择Find Usage。这样的话, jadx 就会为你搜索出在此项目中哪些地方使用了这些类或代码.

(3)反混淆(Deobfuscation)

      一般 apk 在发布出去之前,都是会被混淆的,我们很难看到一个 a.java 的文件之后,就确定它是哪一个,还需要根据包名来区分。而 Deobfusation 功能,可以为它们起一个特殊的名字,这样它在这个项目中,名字就是唯一的,方便我们识别和搜索。这个功能可以在 Tools -> deobfusation 中激活。

(4)导出为 Gradle 项目

      jadx-gui 可以直接阅读代码,还是很方便的。但是毕竟没有我们常见的编辑器来的方便。jadx支持将反编译后的项目,直接导出成一个 Gradle 编译的工程。可以通过 File -> Save as gradle project 来激活这个功能。最终输出的项目,可以直接通过 Android Studio 打开。


可能出现的问题:

1)资源文件可能有缺失,资源文件还是通过apktool来获取


2)inconsistent code
有时候有代码,反编译的不完整,你会看到 JADX WARNING : inconsistent code 标志的错误。jadx 为了应对这样的情况,可以尝试开启 Show inconsistent code 开关。你可以在 File -> Preferences 中找到它。这样处理的代码,大部分为伪代码,可能会有错误的地方。


3)在反编译较大的apk时,如果遇到jadx-jui卡顿和假死的情况,可适当优化jvm相关参数

  • 减少处理的线程数
    jadx 为了加快编译的效率,所以是使用多线程处理的,而多个线程会耗费跟多的内存。所以减小反编译时候的线程数,是一个有效的方法。如果使用命令行的话,可以使用 -j 1 参数,配置线程数为 1,不配置的话,默认线程数为 4。而使用 jadx-gui 的话,可以在 Preferences 中,通过配置 Processing threads count 来配置线程数


  • 修改 jadx 脚本
    直接编辑 ./bin 目录下的 jadx.bat脚本,配置找到 DEFAULT_JVM_OPTS ,将它设置为 DEFAULT_JVM_OPTS="-Xmx2500M" ,就可以配置当前使用的内存大小。


  • 使用命令行命令
    如果以上方式都不好用,在没有更好的办法的情况下,你可以直接使用命令行,通过 jadx 的命令进行放编译。并将线程数配置为 1 ,这样虽然慢一些,但是多数情况下,是可以正常输出反编译后的代码的。
    举个例子:
    jadx -d out -j 1 classes.dex
    更过命令,可以通过 jadx -h 命令进行查看。
    仔细看看 jadx 命令配置的参数,基本上都可以在 Preferences 中,找到对应的配置项,相互对照理解一下,应该不难发现它的使用方式


参考资料:

https://openingsource.org/258/

https://www.jianshu.com/p/64ed26536601


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
大佬,内存改不了啊,不论设置成多少G,多少M,打开-gui还是4G
2020-8-10 17:20
0
游客
登录 | 注册 方可回帖
返回
//