几天前jadx作者放出了最新的1.2.0版本,首度支持了类、方法、字段的重命名特性。但仍有一些不足和缺陷,所以放出本人对jadx增强后的版本。

一、最新的jadx 1.2.0有哪些不足?

今天我简单试用了最新的jadx,发现有以下不足:

不支持对方法内的变量进行重命名。

不支持自动对父、子类中override的其他方法进行重命名。(如果仅重命名1个方法,会导致代码逻辑上的错误。)

对部分override方法重命名时存在bug,会没有反映。

以上两点也刚好是我投入很多时间去解决的问题。相信后续jadx作者会逐步完善这些特性和体验。

二、什么是super-jadx

super-jadx是本人基于原生jadx进行的一个增强版本,专为android逆向人员使用的版本。主要增加了如下特性:

增加对类、方法、字段、变量重命名的支持 (原生jadx不支持)。

对override、interface方法进行关联重命名 (原生jadx不支持)。

重复名称检查(自动对其他class和interface的override、interface方法进行关联检查)。 (原生jadx不支持)。

96b1609e139bf28fe52ce36b1cabcba1.gif

三、为什么要做这个super-jadx

jadx的搜索功能是非常好用的,但遗憾是一直不支持UI界面的重命名,本人一直期待作者skylot能够进行支持,在skylot/jadx的issues也有很多人表达了这个诉求,当时skylot多次明确表示不会增加重命名功能,对jadx的定位只是反编译代码。所以我在去年底和今年用零散的时间对jadx进行架构摸索和改造,逐步增加重命名的相关特性,这对我个人工作而言绝对是个刚需。所以我是先于skylot对jadx进行功能增强的。

四、开发过程中,需解决的问题,都非常耗费时间:增加对变量重命名的支持,原生jadx中完全没有对变量命名的支持。

重命名后更新全局搜索缓存。

分别支持搜索缓存已建立和未建立两种状态下的关联更新。

对override、interface方法进行关联重命名。

重复名称检查,需要自动对其他class和interface的override、interface方法进行关联检查。

后续计划增加的功能:

代码索引持久化,下次启动无需再建立索引,直接可搜索。

插件机制,类似jeb,但是API接口和场景会更贴常用情况。

重命名传导,自动对被赋值的其他变量、字段进行重命名。

交叉引用图或其他辅助分析功能。

五、下载地址:

最后于 2020-11-18 21:36

被pkiller编辑

,原因:

GitHub 加速计划 / ja / jadx
40.41 K
4.78 K
下载
skylot/jadx: 是一个用于反编译Android应用的工具。适合用于需要分析和学习Android应用实现细节的开发者。特点是可以提供反编译功能,将Android应用打包的APK文件转换成可阅读的Java代码。
最近提交(Master分支:3 个月前 )
313c4a12 - 7 天前
39912398 8 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐