android混淆
来源:互联网 发布:python html 解析 编辑:程序博客网 时间:2024/05/16 11:30
还是混淆工程,很早以前做过了,又忘了。。。在此做个记录:
写一个proguard.cfg文件,或者拷贝也行,然后在project.properties中添加proguard.config=proguard.cfg就算生效了,
proguard.cfg内容一般为:
-optimizationpasses 5 -dontusemixedcaseclassnames//混淆时不会产生形形色色的类名 -dontskipnonpubliclibraryclasses//指定不去忽略非公共的类库 -dontpreverify//不预校验 -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*//优化 //不进行混淆保持原样 -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService //保护指定的类和类的成员的名称,如果所有指定的类成员出席 -keepclasseswithmembernames class * { native <methods>; } //保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在 -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } //保护指定类的成员,如果此类受到保护他们会保护的更好 -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } //保护指定的类文件和类成员 -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; }
然后经常需要使用第三方jar包,防止混淆,需要
-libraryjars /aaa.jar
-dontwarn com.xx.yy.**
-keep class com.xx.yy.** { *;}
这样的处理方式来处理,还有suport-v4包,需要
这样来处理
,但是还需要验证反编译后的apk,这个时候通过签名得出apk,使用ApkDecompiler这个工具进行测试验证,
下载地址见下:
http://download.csdn.net/detail/bawang_cn/7407751
本文参考以下链接:都是不错的文章,可以结合起来看
http://blog.csdn.net/p106786860/article/details/11974863
http://www.cnblogs.com/sw926/p/3314165.html
http://blog.sina.com.cn/s/blog_7bac470701014ohn.html
http://www.cnblogs.com/royi123/archive/2013/02/28/2937657.html
问题处理:
在混淆的过程中会遇到各种各样的问题,
比如会遇到java.lang.ClassNotFoundException,就是找不到类,这个需要注意的是看到底是哪个类,为什么混淆之后会没了,然后不要混淆这个类就可以
java.lang.NoSuchFieldException 这个是找不到对应的局部变量,需要看清是哪个变量,比如R资源下的变量找不到,xml,drawable ,layout等等,这样就会在反编译出来的R中找不到对应的变量,R相对应下的有些变量就是空的,这个时候可以添加以下一句,
-keep class **.R$* {
*;
}
再次查看就会发现反编译出来的文件中,R对应的种类下面就有相对应的变量了,说明混淆正确
- Android混淆
- android 混淆
- Android 混淆
- Android-混淆
- Android 混淆
- android 混淆
- android 混淆
- android 混淆
- android混淆
- android混淆
- android混淆
- Android混淆
- android 混淆
- android混淆
- android混淆
- android混淆
- android混淆
- Android混淆
- Lucene4源代码解析
- ORA-00376: file 202 cannot be read at this time ORA-01110: data file 202故障处理
- 第十四周 项目3-立体类族共有的抽象类
- 电厂三维综合管线GIS系统
- 这青春,无悔
- android混淆
- Java语言概述
- 虚函数-计算图形面积
- EXTJS中,取得当前grid下标,给可编辑表格赋值
- jQuery获取当前点击的对象元素
- YY、9158回应将被整顿传言:与事实不符
- TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)
- 立体类族共有的抽象类
- Hadoop生态系统