计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中---------------好了 下面我把自己研究的反编译的过程给大家分享一下,不喜勿喷~~~
我们要用到一个反编译软件 这里有网址 大家可以下载http://www.dayanzai.me/android-hack.html
我在这里就自己模拟创建一个项目,放三个类A,B,C
然后打包APK 步骤不多说,大家应该都了解 注意打包的过程中会用到keystore
打包完之后 找到自己保存到相关地方的APK,我这里是放到了一个文件夹里 ,然后把APK的后缀改成zip然后解压 会得到这些东西
这时候就可以打开你下载好的反编译软件进行反编译了
看这里有好多选项 选择你的dex文件直接拖过来就可以反编译了 这时候你看到的代码 应该是看不懂了
这就是java文件的反编译 但是我们看到这里
为什么只有两个类
因为我在proguard-project.txt中加了一句: -keep class com.example.zcx.A
因为我们反编译的代码默认只保留一个activity的入口,所以这里我保留了一个A类 。你想保留更多的类 可以继续keep。
下面我们讲一下代码的加密,其实很简单;;;;;
打开你项目的/project.properties添加一句:proguard.config=proguard-project.txt
就可以搞定了,你要重新打包一下APK,重新反编译,我把加密和不加密的给你们对比一下
不加密的:
加密的:
你们可以看加密的比不加密的少很多文件 这里是看不到的,这就是代码的混淆,也叫加密
写的不好的地方大家可以批评指正!