2008年7月6日星期日

JAVA反编译探讨-javassist & jclasslib

  最近由于一个项目,需要对无源码的Class类修改其中一个方法,只好采用反编译,得到的源码虽然无语法错误,但产生了逻辑错误,具体原因是反编译可能产生类型转换出错或运算优先级出错,之前的文章有讨论到。
  经过google一把之后,找到javassist,感觉好像可以,看看例子,使用方法很简单,可以不需反编译直接修改class的函数体,经过试验,修改函数体到时成功了,不过这东东仍然没有解决问题,虽然没有深入研究javassist,但感觉他修改了不仅仅是我需要修改的函数,其它函数也被修改了,与反编译产生的BUG一样,所以这鸟东东也只是中看不中用。
  再google一把,找到jclasslib,可以直接修改字节码,不过这东东需要去熟悉JVM指令,比较烦,看来还是老老实实地看反编译后的源文件,找出其中反编译有误的地方,一一修正吧,有时最常用的办法,就是最好的办法。

0 comments:

发表评论

 
Friend JXKJ EAMPUB NIU-B China
CopyRight 2007-2009 WMZSOFT QQ