JAVA动态代理类调试及生成问题解决
发布日期:2021-06-27 12:56:27 浏览次数:40 分类:技术文章

本文共 685 字,大约阅读时间需要 2 分钟。

前几天碰到了这样的一个问题,就是在挖掘JAVA反序列化CVE-2019-10173的时候,compareTo()函数在碰到动态代理类的时候,会执行到Invoke方法,但是这个过程由于动态代理类不会生成,所以没有办法看到调用过程,所以就有了此文,记录一下这个过程。

看到许多文章都是说在动态代理测试中加入System.getProperties().put(“sun.misc.ProxyGenerator.saveGeneratedFiles”, “true”);这样的语句,但是在动态代理调试到compareTo()函数的时候就是JDK内部类了,没有办法修改代码,所以也就没办法生成class文件。

后面找到一个内置在JAVA JDK中的小工具:HSDB工具,这个工具主要用来查看主要用来查询在程序执行过程中对象的运行情况,还有很多其他的功能,这里就不说了

打开命令:java -cp sa-jdi.jar sun.jvm.hotspot.HSDB
首先不运行程序的情况下执行jps命令,再开启调试执行jps命令,找到我们的进程的id
在这里插入图片描述打开这个工具,输入id
在这里插入图片描述保存文件,但是会发现这个文件是0kb,而且jd-gui无法打开,直接放到intellij idea里面反编译进行打开
在这里插入图片描述可以看到里面实现了compareTo()方法,这个里面调用了父类的invoke方法,也就是会执行实现了InvocationHandler接口的类的Invoke方法
也就是会执行到EventHandler这个类里面的方法,这样就实现了理解动态代理类的调用CompareTo()函数的过程的理解

转载地址:https://blog.csdn.net/weixin_43460070/article/details/117718248 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:NULS + NerveNetwork,让公链生态全面实现跨链互通
下一篇:代码审计轻松拿下CNVD证书

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月30日 16时57分40秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章