其实Android 4.0要用ProGuard比2.3更简单:在Eclipse中打开工程目录下的project.properties文件,该文件中有以下两行:
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
根据这段说明,只要将proguard.config前面的#去掉,就可以利用ProGuard来混淆代码了!当然,默认的设置是不带优化功能的,可以用以下设置来加上代码优化功能(上图蓝色文字部分):
proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
接下来就是生成Apk了。这里需要注意的是,如果你用Eclipse里的Run或Build Project/Build All来生成Apk,是不会混淆代码的!在Eclipse的Package Explorer里选中工程的根结点,在右键菜单里找到Android Tools,如下图所示,其下有两个子菜单项:“Export Signed Application Package...”和“Export Unsigned Application Package...”,一个是带RSA数字签名,一个是不带数字签名,根据需要选一个,然后按照向导操作即可,最终生成的Apk就是混淆过代码的了!查看效果可以用7z等压缩程序(Ubuntu中直接用归档管理器)打开,将其中的classes.dex解压,用dex2jar转成jar格式后,再用Java反编码工具打开,就会看到代码的混淆效果。
然后进行反编译:
1、得到 classes.dex文件;直接用你机器上的 解压软件 打开 .apk 文件
解压出 classes.dex 文件;
2、还原.jar文件;这一步需要用到一个工具 dex2jar (谷歌的代码库里有 http://code.google.com/p/dex2jar/)
看名字也不难知道他是干嘛的了吧?(没错,就是 把 dex 还原 成 jar包 )
下载完了,解压,然后把第一步的 产物(即那个classes.dex文件)放到 dex2jar的解压目录里
cmd 命令行 ,目录切换到 dex2jar的目录下(linux 系统的话 执行那个 .sh文件)
“ dex2jar.bat classes.dex”
看到命令行 的 “Done” 之后, dex2jar 文件夹里 就会有“classes.dex.dex2jar.jar” 文件了,
这个就是 传说中的 jar包了
3、查看.jar文件;这一步就是传统的 反编译 了,需要工具辅助,我这里用到的工具是jd-gui(http://java.decompiler.free.fr/?q=jdgui)
下载你的系统对应的版本,解压,(我xp系统)你会看到一个 .exe文件,没错就是 单文件绿色版
双击,选择 第二步 生成的 .jar, 好吧,你的项目是不是 完全还原了呢?