Android 混淆与反编译的简单记录
2017-07-21 13:33
393 查看
-dontusemixedcaseclassnames #混淆时不使用大小写混合类名 -dontskipnonpubliclibraryclasses #不跳过library中的非public的类 -verbose #打印混淆的详细信息 -dontoptimize #不进行优化,建议使用此选项, -dontpreverify #不进行预校验,Android不需要,可加快混淆速度。 -ignorewarnings #忽略警告 -optimizationpasses 5 #指定代码的压缩级别 # 保护代码中的Annotation不被混淆 # 这在JSON实体映射时非常重要,比如fastJson -keepattributes *Annotation* #把混淆类中的方法名也混淆了 -useuniqueclassmembernames #将文件来源重命名为“SourceFile”字符串 -renamesourcefileattribute SourceFile # 避免混淆泛型 # 这在JSON实体映射时非常重要,比如fastJson -keepattributes Signature #-repackageclasses'a' -flattenpackagehierarchy # keep住源文件以及行号 -keepattributes SourceFile,LineNumberTable #------------------ android基本项 ---------------- # 保留所有的本地native方法不被混淆 -keepclasseswithmembernames class * { native <methods>; } # 保留了继承自Activity、Application这些类的子类 # 因为这些子类有可能被外部调用 # 比如第一行就保证了所有Activity的子类不要被混淆 -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 * extends android.view.View -keep public class com.android.vending.licensing.ILicensingService # 枚举类不能被混淆 -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } # 保留自定义控件(继承自View)不能被混淆 -keep public class * extends android.view.View { public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); public void set*(***); *** get* (); } # 保留Parcelable序列化的类不能被混淆 -keep class * implements android.os.Parcelable{ public static final android.os.Parcelable$Creator *; } # 保留Serializable 序列化的类不被混淆 -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient <fields>; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } # 对R文件下的所有类及其方法,都不能被混淆 -keepclassmembers class **.R$* { *; } # 对于带有回调函数onXXEvent的,不能混淆 -keepclassmembers class * { void *(**On*Event); } # -------------------------------------------------------------------------- # 项目代码 -keep class **.R{*;} -keep class com.xvzoom.wallet.model.** { *; } # ------------------------------lib------------------------------------- # -------------------------------------------------------------------------- # eventbus -keep class de.greenrobot.event.** {*;} -keep public class *{ public void onEvent*(...); } # -------------------------------------------------------------------------- #glide -keep public class * implements com.bumptech.glide.module.GlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; } # -------------------------------------------------------------------------- # butterknife -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; } # -------------------------------------------------------------------------- # Bugly -dontwarn com.tencent.bugly.** -keep public class com.tencent.bugly.**{*;} # -------------------------------------------------------------------------- # ImageLoader -keep class com.squareup.otto.** {*;} -dontwarn com.squareup.picasso.OkHttpDownloader # -------------------------------------------------------------------------- # PickerView -keep class com.bigkoo.** {*;} -dontwarn com.bigkoo.** # -------------------------------------------------------------------------- # fastjson -dontwarn com.alibaba.fastjson.** -keep class com.alibaba.fastjson.**{*; } # -------------------------------------------------------------------------- # NoHttp -dontwarn com.yolanda.nohttp.** -keep class com.yolanda.nohttp.**{*;} -keep class com.xvzoom.wallet.network.** { *; } # -------------------------------------------------------------------------- # tencent -dontwarn com.tencent.mm.** -keep class com.tencent.mm.**{*;} # -------------------------------------------------------------------------- # zxing -dontwarn com.google.zxing.** -keep class com.google.zxing.**{*;} # -------------------------------------------------------------------------- # nineoldandroids -dontwarn com.nineoldandroids.** -keep class com.nineoldandroids.** { *;} # -------------------------------------------------------------------------- # okhttp -keep class com.squareup.okhttp.** { *; } -keep interface com.squareup.okhttp.** { *; } -dontwarn com.squareup.okhttp.* #如果引用了v4或者v7包 -dontwarn android.support.** -dontwarn android.support.v4.** -keep class android.support.v4.** { *; } -keep public class * extends android.support.v4.** -keep public class * extends android.app.Fragment -dontwarn android.support.v7.** -keep class android.support.v7.** { *; } -keep public class * extends android.support.v7.**
混淆简单记录,虽然没用到 哈哈哈
反编译
1.下载dex2jar和gui。
dex2jar 这个工具用于将dex文件转换成jar文件
jd-gui 这个工具用于将jar文件转换成java代码
2.将apk解压,将classes.dex复制进dex2jar。
3.cmd进入dex2jar目录下,使用d2j-dex2jar classes.dex,生成jar包。
4.jar包在jd-gui中可以查看目录。
相关文章推荐
- Android混淆、反编译以及反破解的简单回顾
- Android混淆、反编译以及反破解的简单回顾
- Android混淆、反编译以及反破解的简单回顾
- Android混淆、反编译以及反破解的简单回顾
- Android混淆、反编译以及反破解的简单回顾
- Android混淆、反编译以及反破解的简单回顾
- Android混淆、反编译以及反破解的简单回顾
- Android混淆、反编译以及反破解的简单回顾
- [置顶] Android apk安全 反编译及防反编译 简单记录
- android 混淆,反编译,反破解的简单说明和认识
- Android混淆、反编译以及反破解的简单回顾
- Android混淆、反编译以及反破解的简单回顾
- Android混淆、反编译以及反破解的简单回顾
- 简单记录,关于android animation的简单应用。
- Android APK反编译就这么简单 详解(附图)
- Android APK反编译就这么简单 详解(附图)
- Android APK反编译就这么简单 详解(附图)
- Android 代码混淆 防止反编译
- Android APK反编译就这么简单 详解(附图)和使用AXMLPrinter2.jar批量反编译xml文件
- 【Android 应用开发】 Android APK 反编译 混淆 反编译后重编译