黑客破譯android開發代碼真就那麼容易?

不少程序員辛辛苦苦開發出的android開發代碼,很容易就被黑客翻譯了。 java

 

Google彷佛也發現了這個問題,從SDK2.3開始咱們能夠看到在android-sdk-windows\tools\下面多了一個proguard文件夾 android

proguard是一個java代碼混淆的工具,經過proguard,別人即便反編譯你的apk包,也只會看到一些讓人很難看懂的代碼,從而達到保護代碼的做用。 c++

在工程的"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的方式來編譯的


windows

-injars  androidtest.jar【jar包所在地址】 
-outjars  out【輸出地址】 app

-libraryjars    'D:\android-sdk-windows\platforms\android-9\android.jar' 【引用的庫的jar,用於解析injars所指定的jar類】 ide



-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 <methods>;  【全部方法不進行混淆】
}
-keep public class com.asqw.android{
public void Start(java.lang.String); 【對該ipad開發方法不進行混淆】
}

-keepclasseswithmembernames class * { 【保護指定的類和類的成員的名稱,若是全部指定的類成員出席(在壓縮步驟以後)】

native <methods>;
}

-keepclasseswithmembers class * { 【保護蘋果 開發指定的類和類的成員,但條件是全部指定的類和類成員是要存在。】
public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
public <init>(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 *;
}

 

以上問題可能不能百分之百的對黑客的反響破譯起到阻隔做用,但毫無疑問,效果也是顯著的.

相關文章
相關標籤/搜索