Android 混淆与反编译的简单记录

来源:互联网 发布:停车位软件哪个好 编辑:程序博客网 时间:2024/05/01 09:09
-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中可以查看目录。

原创粉丝点击