美文网首页
apk混淆经验

apk混淆经验

作者: charjack | 来源:发表于2018-08-16 16:03 被阅读0次

    一般正常发不出去的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.** { *;}

    相关文章

      网友评论

          本文标题:apk混淆经验

          本文链接:https://www.haomeiwen.com/subject/cprobftx.html