Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18234
  • 博文数量: 7
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 45
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-05 16:35
文章分类
文章存档

2012年(7)

我的朋友
最近访客

分类:

2012-09-07 14:37:38

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

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

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

          3)生成代码的时序图
               在阅读一些开源的项目代码时,对于一些地方我们需要画出时序图来了解具体的细节,但是很多时候,方法之间的调用关系往往会很很复杂,手动绘制比较耗费时间和精力。在这里,我们就可以通过在代码中插入一些内容来实现对方法调用的追踪,然后通过插入的代码统计到的信息来绘制出程序执行的时序图。具体细节这里也不讨论了,详细内容参考http://blog.crazybob.org/2005/10/generating-sequence-diagrams-using.html
阅读(638) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~