zoukankan      html  css  js  c++  java
  • android 开发代码被黑客破译有那么容易吗?

    很多程序员辛辛苦苦开发出的android开发代码,很容易就被黑客翻译了。
    Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows ools下面多了一个proguard文件夹
    proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。
    在工程的"default.properties"中添加这样一句话“proguard.config=proguard.cfg”
    打包签名后的.apk就是混淆的,其实我们只要做一步就可以了就是在"default.properties"中添加这样一句话“proguard.config=proguard.cfg”就可以了。
    如果想要更加复杂地混淆代码,可以详细地对该文件进行配置.
    由于苹果 开发是Android虚拟机加载的,它有一定的规范,加密apk后Dalvik无法识别apk了。完全避免是不可能的,总有人能够破解你的代码。但是有几种
    方式来提高被反编译取代码的难度:
    1 关键ipad开发代码使用jni调用本地代码,用c或者c++编写,因此相对比较难于反编译

    2 混淆java代码。混淆是不改变代码逻辑的情况下,增加无用代码,或者重命名,使反编译后的源代码难于看懂。

    网上开源的苹果 开发代码混淆工具较多,一般是用ant的方式来编译的

    -injars androidtest.jar【jar包所在地址】
    -outjars out【输出地址】
    -libraryjars 'D:android-sdk-windowsplatformsandroid-9android.jar' 【引用的库的jar,用于解析injars所指定的jar类】
    -optimizationpasses 5
    -dontusemixedcaseclassnames 【混淆时苹果 开发不会产生形形色色的类名 】
    -dontskipnonpubliclibraryclasses 【指定不去忽略非公共的库类。 】
    -dontpreverify 【不预校验】
    -verbose
    -optimizations !code/simplification/www.lekolite.cn/*,!class/merging/* 【优化】
    -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 com.android.vending.licensing.ILicensingService
    -keep public abstract interface com.asqw.android.Listener{
    public protected ; 【所有方法不进行混淆】
    }
    -keep public class com.asqw.android{
    public void Start(java.lang.String); 【对该ipad开发方法不进行混淆】
    }
    -keepclasseswithmembernames class * { 【保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)】
    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 {【保护指定ipad开发类的成员,如果此类受到保护他们会保护的更好 】
    public void *(android.view.View);
    }
    -keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    }
    -keep class * implements android.os.Parcelable {【保护指定的类文件和类的成员】
    public static final android.os.Parcelable$Creator *;
    }

    以上问题可能不能百分之百的对黑客的反向破译起到阻隔作用,但毫无疑问,效果也是显著的。


    本文出自 “清源教育” 博客,转载请注明此处,谢谢!

  • 相关阅读:
    bzoj 4012: [HNOI2015]开店
    POJ 1054 The Troublesome Frog
    POJ 3171 Cleaning Shifts
    POJ 3411 Paid Roads
    POJ 3045 Cow Acrobats
    POJ 1742 Coins
    POJ 3181 Dollar Dayz
    POJ 3040 Allowance
    POJ 3666 Making the Grade
    洛谷 P3657 [USACO17FEB]Why Did the Cow Cross the Road II P
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3329084.html
Copyright © 2011-2022 走看看