JVM之字节码——字节码增强应用(四)

  • Post author:
  • Post category:其他


source:

http://blog.chinaunix.net/uid-21718047-id-3340423.html




4、扩展内容


当然,除了前面的内容,通过字节码的操作,还可以完成很多功能。前面没有提到的有:







1)Java代码反编译


class文件的格式很大程度上都体现了Java代码的结构。通过class文件可以很快地反推出部分Java代码,不过对于指令码的处理就需要另当别论了,现在比较开源的一些反编译工具主要有JD,Dava,SourceAgain等。




2)Java代码混淆器

代码是程序员智慧的结晶,怎么能这么轻易就被人窃取呢?有工具可以反编译,当然也有工具来防止反编译了,这就是代码混淆器。代码混淆器也是基于class文件来实现的。它的主要原理是破坏class文件中保存的Java代码的信息,使得反编译器无法反编译出代码。主要的手段有:重命名变量和方法,拆分或者合并class文件,使用Java代码里不可能出现的标识符等等。详细内容可以参考这篇论文

http://www.sable.mcgill.ca/publications/techreports/sable-tr-2006-5.pdf






3)生成代码的时序图

在阅读一些开源的项目代码时,对于一些地方我们需要画出时序图来了解具体的细节,但是很多时候,方法之间的调用关系往往会很很复杂,手动绘制比较耗费时间和精力。在这里,我们就可以通过在代码中插入一些内容来实现对方法调用的追踪,然后通过插入的代码统计到的信息来绘制出程序执行的时序图。具体细节这里也不讨论了,详细内容参考

http://blog.crazybob.org/2005/10/generating-sequence-diagrams-using.html


博客推荐文章