昨晚下班回去,研究了下jocky1.0.3的使用,发现编译时提示引用类库版本不对,捣弄了半个小时后终于理解,原来是我的jdk1.7版本过高,这货是06年的版本,到现在都没更新过,支持(限制)的最高版本是5.0(1.5),对应的类文件版本号是49....通过逆向编译找了一个晚上,终于发现源代码中一段关键判断,但是又发现无法直接编译修改过的源文件(引用的类太多..),今天早上寻找了下直接编辑class文件的方法,在同事帮助下把相应的字节码段删去了,导入回包里面,测试了次,貌似运行没啥问题,混淆编译也过去了,把编译出的class文件逆向看了下,也差不多是那个样子,名称全部都变掉了,看着有点想吐。
(关于修改代码内容,压缩包内有说明,二进制class可用JBE打开)
但是,现在编译出的类文件版本号仍然是49的,应该还有其他代码控制版本号写入,没去找,先去翻一翻有没有更方便的混淆器,貌似这货只能提供编译出class文件的功能,没帮我打包成jar...
另外,main函数一定不能混淆编译,其他看情况而定..
附加两个混淆编译后逆向编译的截图:
下载地址:http://download.csdn.net/detail/u011088871/5603063
PS. 刚想了下,可能这货还是有问题,原来的版本限制在1.5的话,也许在混淆规则机制上本身是不支持更高版本jdk特性的,现在酱紫硬破了,不知道会对1.5版本后的jdk新特性产生什么样的影响,完全没测试过..不负责任的发了,权当玩具玩玩吧,想研究的话可以下载看看,压缩包里面有文档粗略记载了下修改代码的地方...