apk混淆经验

一般正常发不出去的apk都是需要进行混淆打包的,否则太容易被破解了。比如用Android逆向助手这个工作,把apk转化为dex,然后dex再转化为jar,就可以通过工具查看java文件了。亲测,的确恐怖!然后再用这个工具反编译一下apk,拿到资源文件,这样一个apk就轻松的被破解了。此外除了java文件的混淆外,还有就是微信团队开源了一个混淆资源文件的方法,https://github.com/shwenzhang/AndResGuard,可以增加对代码可读性进行一定的包装。

下面是一点进行apk混淆的常用的方法。

-optimizationpasses 5 ->设置混淆的压缩比率 0 ~ 7 -dontusemixedcaseclassnames -> Aa aA -dontskipnonpubliclibraryclasses ->如果应用程序引入的有jar包,并且想混淆jar包里面的class -dontpreverify -verbose ->混淆后生产映射文件 map 类名->转化后类名的映射-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* ->混淆采用的算法.

-keep public class * extends android.app.Activity                        ->所有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

-dontwarn android.support.v4.**

-dontwarn android.annotation

-libraryjars libs/android-support-v4.jar

-keepclasseswithmembernames class * {            -> 所有native的方法不能去混淆.

    native ;

}

-keepclasseswithmembers class * {

    public (android.content.Context, android.util.AttributeSet);            -->某些构造方法不能去混淆

}

-keepclasseswithmembers class * {

    public (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 {              -> aidl文件不能去混淆.

  public static final android.os.Parcelable$Creator *;

}

-keepclassmembers class * {

  public (org.json.JSONObject);

}

-keep class android.support.v4.**{*;}

-keepattributes *Annotation*

============================================

对于引用第三方包的情况,可以采用下面方式避免打包出错:

-libraryjars libs/aaa.jar

-dontwarn com.xx.yy.**

-keep class com.xx.yy.** { *;}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自: http://blog.csdn.net/u012188405/article/details/5198...
    fjxmyzy阅读 1,758评论 1 5
  • 混淆规则 因为Android是使用Java开发的,所以开发者可以使用ProGuard对代码进行混淆。SDK已经集成...
    CarlosLynn阅读 1,610评论 0 0
  • 1.首先需要在app下的build.gradle下配置,true表示编译时会混淆代码\ 2.在proguard-r...
    Thomas_yy阅读 6,716评论 0 6
  • 我不喜欢无脑、怀着特殊态度甚至连内容看都没看的点赞。诚然,生活中的我确实是这么做的。 经常,我发QQ空间、朋友圈的...
    风吹响的清笛阅读 2,096评论 42 26
  • 此刻凌晨一点多,辗转反侧难以入睡。睡在家乡的土地,难免想起电影里的人物。深夜食堂,没有酒肉,更多的是酒桌...
    菅浩栋阅读 284评论 0 0