0x01 大致情况:

  • 获取到一个修改版的Java工具, 想研究下具体的功能,学习一下, 直接反编译,发现存在自定义的 ClassLoader 具体功能都是 通过ClassLoader 去加载 bytecode 来实现的.直接反编译并不能直接查看功能代码
img

0x02 反编译思路

jar 包最终运行肯定加载的到 jvm 虚拟机当中,我们的目的是,从虚拟机中 dump 出所有的解密后的 Class

搜索相关成熟的实现,发现阿里的 Java 应用诊断利器Arthas

img

仔细看了下功能发现,有相关实现的命令 dump 但是他只支持部分的 dump

img

通过我们已知的关键字 dump 下,发现可以成功看到对应的类文件, 测试发现只能 dump 个别的类,而且限制了数量:

img

测试 dump 一个 Class 看下有没有问题 :

img

但是我们的目的是dump所有Class. 关键字搜索了下,发现 github issus 发现 有同样的问题:

image.png

作者也表明没有这样具体的功能:

img

后续查看了下作者的 github, 其他项目 发现了这个工具 https://github.com/hengyunabc/dumpclass

img

直接利用下,成功dump *core*.*

img

尝试dump *shell**

image.png
  • 最终成功获取到 Java 工具的所有功能代码:
img

0x03 参考工具