java反编译软件jd-gui.exe以及使用javassist修改class文件 .
(2012-11-13 13:39:45)
标签:
杂谈
上周实验室的一个去年完成的项目出bug了,负责这个项目的人有很多,但杯具的是只剩我还在实验室了。。只好我来调,但更杯具的是,竟然找不到源代码了。。汗。。
只好求助志哥,还好志哥经验丰富,推荐用jd-gui,以下是他教我的。
jd-gui的反编译效果还真不错,是我目前为止见过最好的了,能反映出所有源码的层次,而且代码基本还原了,除了原来的一些泛型显示不出来或者多次重新定义了变量外,基本没问题。
用这个软件反编译出来后,我确定问题的类,修改完成后,我新建一个同样的工程,Java Project 或者Web
Project,把原来lib包里的jar导入,
然后把原来的class文件(对应无源码的那部分)用winrar压缩成一个jar,是的,确实可以压缩成一个jar包,在压缩过程中把后缀名改下就行。把这个jar包导入。
然后在刚刚建的工程里面新建一个类,把之前改好的那个类的内容copy过去,然后编译,编译完后直接把生成的对应的class文件复制到服务器上对应类的目录,然后重新运行查看效果,当然你也可以在本地重新建立服务器,在本地测。直至成功。
很有意思的是,这次工程还运行了一段R脚本,导致我还得重新调R脚本,在这次调试中,志哥给我带来了很大的积极影响,就是,脚本不过是脚本,完全
可以在一个脚本解释器里面一步一步执行这些脚本,查看有哪些错误,虽然脚本的语法我不知道,但足以从这段脚本中窥得一二,而且编程语言万变不离其宗,定义
的方式都那么样,完全不用担心看不懂,学了这么多编程语言,看到一段脚本,基本能知道是啥意思。一步一步执行,写了几行,自然就知道了。
最后,感谢一下志哥。
对了,他昨天又给我露了一手,调试一个python源码,一个大包,太大了,所以来了个破坏性调试,把某些代码/文件夹移走,一报错自然就知道哪个地方调用了哪个模块了,哈哈
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。