现在一些公司可能会负责后期维护一些别的公司的项目,但是有些公司可能只给源码,不愿意直接提供代码(价钱问题),但是开发公司的技术人员因为入行时间,工作背景,编码风格以及使用技术的不同,明明在服务器可以跑的class文件反编译出来之后会出现乱码或者缺失的问题,这种情况的可能目前我觉得是两个1.开发人员故意混淆;2.反编译工具选择不合适。
我公司前段时间接手维护一个项目,得到class文件后反编译后许多类出现乱码或者方法被注释代替的情况,我们那时选择的反编译工具是 JD-GUI,是用的比较多反编译工具,后来也换了一些别的时下使用率高的反编译工具,都是不成功的
后面了解那个开发公司的背景以后,知道开发项目的工作人员是入行比较早的开发人员,一些编译出来的类中使用的方法也是很多过时的方法,我突然想起一句话"只有魔法才能打败魔法",于是我选择了一款比较古老的编译工具xjad,这款编译工具也是上古时期的反编译工具,在2002年还是2004年就已经停止维护了,但是竟然可以奇迹般的把源码给反编译过来了!
所以有时候我们反编译失败时可以结合开发背景选择多个反编译工具来反编译源码,如果不是开发人员故意混淆代码的话,基本上都能反编译出来的。