通常我们要修改一个java函数的方法都是修改这个函数的源码文件,然后重新编译生成修改后的字节码文件,如果代码我们自己写的还好,我们可以很方便的修改源码,但是考虑另外一个场景,如果代码不是我们自己写的,比如我们只有一个可执行jar包,但没有这个jar包的源码,然后想要修改这个类中的某个函数的功能,再比如一般而言jar包的开发者在在开发该jar包时肯定会有一些调试日志打印的,但是在发布该jar包的时候一般会通过混淆规则去除这些调试日志,我们在分析这些jar包的某些逻辑的时候可能需要像其开发者一样在运行时打印一些关键参数…