Jar包的反编译:
Java的世界是透明的,当编译java程序的时候,是将java源文件转成.class文件,java虚拟机去执行这些字节码从而得到运行java程序的目的。那么从.class文件能不能得到java源文件呢?答案是肯定的!现在就为大家推荐一款神器jd-gui.exe,界面如下图:
它能将.class文件转成java文件,就能看到源代码了!想copy代码的、想汉化的、想盗版的、想学习人家源码的统统没问题!我们常常见到java中的jar包,通过这个工具能看到jar包中的具体实现,最近公司在做支付宝的手机支付,所有这里去看看支付宝提供的jar包,学习一下:
点击File后选择jar包即可,出现界面如下:
那么就看到了支付宝手机jar包的源代码了,比如Http请求对象、返回状态等等哪些。那么这不就看到了支付宝的数据封装了且不是泄密了吗?当然没有那么严重,支付宝那么多牛人,他们肯定早就知道了反编译会透明java代码了,所以这个jar包中的核心代码不是用java来实现的,任你怎么反编译也看不到具体的实现。
Android的反编译
Android应用程序是用java语言来写的,所以在反编译方面也跟java一样的。这里推荐一款android反编译工具ApkDec,该反编译工具将Apk直接分解成java源文件的jar包和资源文件,java源文件的jar包通过jd-gui.ext就能看到源码,包括android工程中引用的jar包中的源码!资源文件直接打开就可以看到源码。
如果某个Apk完全是用java写的,通过这个工具反编译之后就相当于完全开源了,这对商家的版权和商业机密是非常不利的,所以建议在开发具有商业机密和高度保密的apk时,这些重要的部分用其他语言来实现,防止java反编译后被别人看出了端详,比如在android里面使用jni,重要的部分用C/C++去实现。即时是被反编译,也只能看出接口,看不出具体的实现。
好了,具体就是这样的。关于反编译工具,见如下地址:http://download.csdn.net/detail/main_stage/7477111