-
-
[原创]Java逆向_arthas反编译、dump class和动态修改静态变量的值
-
发表于: 2024-11-21 01:24 6656
-
arthas是个Java诊断工具,可以在Jar程序运行的时候dump出真实的class文件,感觉这个功能对于逆向来说很有用。另外,arthas也支持反编译,但效果一般,并不比jadx-gui这些工具要好。想尝试用arthas动态调试来着,发现也不行,原生功能貌似不支持断点调试,不过可以支持ognl表达式,这是个很有潜力的特性,可以借此实现修改类静态变量的功能,但想要实现方便的断点调试,似乎还有些困难。
有些Java壳在平时保护的好好的,静态反编译看不出源码,但是运行的时候会先解密,再加载到内存里,这种情况下就可以使用arthas来绕过保护,还原出真实的class文件。
需要说明的是,如果原始class先做了混淆,再做了加密,则dump出来的是解密了但依然有混淆的class。
demo.jar没有加壳,虽然加个加解密的壳可以更好的演示dump class的效果,但没有加壳。
demo类中有个静态变量a,值为123。main函数循环打印i和a的值。
jad可以反编译制定的class,但反编译效果并没有比其他工具更好,如果有壳保护会失败。
arthas可以dump出内存中真实的class文件。
dump出来的demo.class,可以用jadx查看效果。
从官方介绍来看,不支持断点调试是arthas的特性,不是缺点,因为在生产环境中调试是不可接受的事情。考虑基于arthas魔改一个版本,使支持断点调试?
本文主要介绍了arthas的3种用法,反编译、dump真实的class文件和使用ognl表达式修改类静态变量的值,其中dump真实的class文件在破解加解密壳方面比较有用。arthas是个很优秀的工具,还有更多功能值得探索。另外,是否可以魔改arthas使其支持断点调试,感觉也会是个比较有趣的问题。
3faK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6S2L8r3W2T1j5h3u0S2i4K6u0r3j5i4u0@1K9r3q4K6
0bcK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2M7Y4c8Z5j5i4y4Q4x3X3g2S2L8r3W2&6N6h3&6Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8$3y4Q4x3V1j5`.
1b9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2M7Y4c8Z5j5i4y4Q4x3X3g2S2L8r3W2&6N6h3&6Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8$3y4Q4x3V1k6S2M7Y4c8Z5j5i4y4Q4x3X3c8@1N6i4c8G2M7X3W2S2L8s2y4Q4x3X3g2Z5N6r3#2D9i4K6y4r3L8r3q4F1k6%4g2S2k6$3g2Q4x3@1c8U0L8W2)9J5y4X3q4E0M7q4)9K6b7X3W2V1i4K6y4p5j5i4u0@1K9r3q4K6i4K6u0V1j5X3q4K6K9h3y4K6
https://bbs.kanxue.com/thread-257207.htm
拓展阅读
jeb破解 | mc、redefine、重新编译、热patch、javaagent
https://bbs.kanxue.com/thread-257577.htm
Burpsuite破解原理 | trace、stack、watch
https://bbs.kanxue.com/thread-257231.htm
9b7K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0P5g2)9J5k6h3!0K6j5$3S2A6L8X3q4Q4x3X3g2F1k6i4c8Q4x3V1k6Y4L8$3!0Y4L8r3g2%4k6h3I4D9i4K6u0r3j5X3I4G2k6#2)9J5c8U0x3I4y4e0j5@1x3U0b7`.
https://bbs.kanxue.com/thread-273274.htm
Java Compiler的Javac命令行参数设置里加上-g:none参数,应用之后,随便修改个Java文件,加个换行或空格都行,然后重新编译导出即可。
java -jar arthas-boot.jar
jad demo
java -jar arthas-boot.jar