您的位置:首页 > 移动开发 > Android开发

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 反编译