欢迎来到天天文库
浏览记录
ID:44713569
大小:156.86 KB
页数:5页
时间:2019-10-25
《Android代码混淆》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Android代码混淆一个xxx.apk提交给测试、ok,去倒杯水,看看网页~~~~~呃,忽然觉得是不是应该给我的代码提高点安全性,记得看过apk直接可以解压,然后很容易的就可以反编译出.java找了找,果然,这一切只不过是一分钟的事儿,1、得到classes.dex文件;直接用你机器上的 解压软件打开.apk文件 解压出classes.dex文件,(这个就是.jar的前生---其实应该说后世) 2、还原.jar文件;这一步需要用到一个工具 dex2jar 看名字也不难知道他是干嘛的了吧?(没错,
2、就是把dex还原成 jar包) 下载完了,解压,然后把第一步的产物(即那个classes.dex文件)放到dex2jar的解压目录里 (解压目录里有dex2jar.bat文件,检查一下,没有的话说明目录不对、再找找) cmd命令行,目录切换到dex2jar的目录下(linux系统的话执行那个.sh文件) “ dex2jar.batclasses.dex” 看到命令行 的“Done”之后,dex2jar文件夹里就会有“classes.dex.dex2jar.jar”文件了, 这个就是传说中
3、的jar包了 3、查看.jar文件;这一步就是传统的反编译了,需要工具辅助,我这里用到的工具是jd-gui 下载你的系统对应的版本,解压,(我xp系统)你会看到一个.exe文件,没错就是单文件绿色版 双击,选择第二步生成的.jar,好吧,你的项目是不是完全还原了呢?(内部类的话还原后的结构看着有点不喜欢)没错,这么简单就能让你的代码暴露了,心疼不?[这里我就不贴图了,公司的项目]好了,接下来说说 怎么混淆吧,网络上好多介绍 proguard混淆android项目的文章,都是抄来贴去,好几个都是讲得
4、没头没尾、我看了好半天 ,愣是没搞明白,……androidsdktools目录下看到 proguard了没?新建一个2.3.3的项目,你会看到项目文件里有一个 proguard.cfg文件?好吧,伟大的google已经帮我们做了这么多事儿了,可惜是从2.3开始的,那我悲催的项目(基于2.2的sdk)该如何是好?(非得残忍的把项目属性设置为2.3的么?其实即使你该了,google也不会为你把proguard.cfg文件补上的)呵呵,其实不用,你只要把 proguard.cfg文件拷贝到你的旧项目里就好了
5、,当然这样还不够,因为google是默认不混淆项目的To enable ProGuard so that it runs as part of an Ant or Eclipse build, set the proguard.config property in the /default.properties file. The path can be an absolute path or a path relative to the project's root. go
6、ogle告诉我们还要配置default.properties 嗯,把 proguard.config=proguard.cfg加上好了,再次生成新的 .apk文件,然后用上面的方法反编译你的项目,你会看到aabbcc的包、aabbcc的类和aabbcc的变量名,方法名.这个我相信你自己也搞的头昏了吧?再看看 proguard.cfg文件-optimizationpasses5-dontusemixedcaseclassnames-dontskipnonpubliclibraryclasses-dontp
7、reverify-verbose-optimizations!code/simplification/arithmetic,!field/*,!class/merging/*-keeppublicclass*extendsandroid.app.Activity-keeppublicclass*extendsandroid.app.Application-keeppublicclass*extendsandroid.app.Service-keeppublicclass*extendsandroid.c
8、ontent.BroadcastReceiver-keeppublicclass*extendsandroid.content.ContentProvider-keeppublicclasscom.android.vending.licensing.ILicensingService-keepclasseswithmembernamesclass*{native;}-keepclasseswithmembernamescl
此文档下载收益归作者所有