emm, 还不错。 值得一提的是,有人可能觉得 JEB 没有像 Jadx 一样自动替换常量的功能,导致像 0x7F070090 这样的资源 ID 看起来很不友好, 不过其实你按 tab 键,切换到汇编视图,也能看到 JEB 帮你做好的资源常量注释,能让你知道这个 ID 代表的资源。
还有 setContentView 的时候,也会注释一个 layout 的注释
可以看到上面还有覆写的注释。还可以对资源 ID 进行交叉引用,将光标点到资源 ID,然后:
文件 -> 脚本 -> Registered -> AndroidXrefResId
这是 JEB 自带的脚本实例中的一个,结果如下:
这些都是 JEB3 以来不断优化的细节。
这个功能很易懂,就是将反射调用优化成正常的调用语句或者字段访问、赋值语句。
具体原理在 2013 年 JEB 发表过的《Decompiled Java Code Manipulation using JEB API – Part 3: Defeating Reflection》中,当时还是 JEB1 的时代,现在都快 JEB4 了,JEB 才把这个功能内嵌到 JEB3 里面,事实证明,一款软件不被破解就永远不知道自己还有多少功能需要更新!(hhh, 开玩笑,请多多支持正版。)
效果是这样子的
源码:
效果:
也有不足的点,
这个东西我研究了半天也没知道是怎么触发的,好像也没有开关。大概就是依赖 JEB 写的 ast.emulator 来动态的解密字符串并且把解密 Call 替换为常量。
虽然很实用,不用以后每次都手动写解密脚本,然鹅没学会咋用,估计还没完善吧。 放个官方效果图
Before:
After:
JEB 之前是支持的一直都是 DEX 反编译,这次也支持 Java 了,也就是说可以反编译 class 文件。