黑客破譯android開發(fā)代碼真就那么簡(jiǎn)單?
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
很多程序員辛辛苦苦開發(fā)出的android開發(fā)代碼,很容易就被黑客翻譯了。
Google似乎也發(fā)現(xiàn)了這個(gè)問題,從SDK2.3開始我們可以看到在android-sdk-windows\tools\下面多了一個(gè)proguard文件夾 proguard是一個(gè)java代碼混淆的工具,通過proguard,別人即使反編譯你的apk包,也只會(huì)看到一些讓人很難看懂的代碼,從而達(dá)到保護(hù)代碼的作用。 在工程的"default.properties"中添加這樣一句話“proguard.config=proguard.cfg” 打包簽名后的.apk就是混淆的,其實(shí)我們只要做一步就可以了就是在"default.properties"中添加這樣一句話“proguard.config=proguard.cfg”就可以了。 如果想要更加復(fù)雜地混淆代碼,可以詳細(xì)地對(duì)該文件進(jìn)行配置. 由于蘋果 開發(fā)是Android虛擬機(jī)加載的,它有一定的規(guī)范,加密apk后Dalvik無法識(shí)別apk了。完全避免是不可能的,總有人能夠破解你的代碼。但是有幾種 方式來提高被反編譯取代碼的難度: 1 關(guān)鍵ipad開發(fā)代碼使用jni調(diào)用本地代碼,用c或者c++編寫,因此相對(duì)比較難于反編譯 2 混淆java代碼?;煜遣桓淖兇a邏輯的情況下,增加無用代碼,或者重命名,使反編譯后的源代碼難于看懂。 網(wǎng)上開源的蘋果 開發(fā)代碼混淆工具較多,一般是用ant的方式來編譯的 -injars androidtest.jar【jar包所在地址】 -outjars out【輸出地址】 -libraryjars 'D:\android-sdk-windows\platforms\android-9\android.jar' 【引用的庫的jar,用于解析injars所指定的jar類】 -optimizationpasses 5 -dontusemixedcaseclassnames 【混淆時(shí)蘋果 開發(fā)不會(huì)產(chǎn)生形形色色的類名 】 -dontskipnonpubliclibraryclasses 【指定不去忽略非公共的庫類。 】 -dontpreverify 【不預(yù)校驗(yàn)】 -verbose -optimizations !code/simplification/www.lekolite.cn/*,!class/merging/* 【優(yōu)化】 -keep public class * extends android.app.Activity 【不進(jìn)行混淆保持原樣】 -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); 【對(duì)該ipad開發(fā)方法不進(jìn)行混淆】 } -keepclasseswithmembernames class * { 【保護(hù)指定的類和類的成員的名稱,如果所有指定的類成員出席(在壓縮步驟之后)】 native } -keepclasseswithmembers class * { 【保護(hù)蘋果 開發(fā)指定的類和類的成員,但條件是所有指定的類和類成員是要存在?!?/P> public } -keepclasseswithmembers class * { public } -keepclassmembers class * extends android.app.Activity {【保護(hù)指定ipad開發(fā)類的成員,如果此類受到保護(hù)他們會(huì)保護(hù)的更好 】 public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable {【保護(hù)指定的類文件和類的成員】 public static final android.os.Parcelable$Creator *; } 以上問題可能不能百分之百的對(duì)黑客的反向破譯起到阻隔作用,但毫無疑問,效果也是顯著的. 該文章在 2014/11/24 23:52:25 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |