下面具體說一說怎麼樣讓SDK2.3下的proguard.cfg文件起作用,先來看看android-sdk-windows\tools\lib\proguard.cfg的內容:view plain 1. -optimizationpasses 5 2. -dontusemixedcaseclassnames 3. - 4. -dontpreverify 5. -verbose 6. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 7. 8. -keep public class * extends android.app.Activity 9. -keep public class * extends android.app.Application 10. -keep public class * extends android.app.Service 11. -keep public class * extends android.content.BroadcastReceiver 12. -keep public class * extends android.content.ContentProvider 13. -keep public class * extends android.app.backup.BackupAgentHelper 14. -keep public class * extends android.preference.Preference 15. -keep public class com.android.vending.licensing.ILicensingService 16. 17. -keepclasseswithmembernames class * { 18. native <methods>; 19. } 20. 21. -keepclasseswithmembernames class * { 22. public <init>(android.content.Context, android.util.AttributeSet); 23. } 24. 25. -keepclasseswithmembernames class * { 26. public <init>(android.content.Context, android.util.AttributeSet, int); 27. } 28. 29. -keepclassmembers enum * { 30. public static **[] values(); 31. public static ** valueOf(java.lang.String); 32. } 33. 34. -keep class * implements android.os.Parcelable { 35. public static final android.os.Parcelable$Creator *; 36. } 從腳本中可以看到,混淆中保留了繼承自Activity、Service、Application、BroadcastReceiver、ContentProvider等基本組件以及com.android.vending.licensing.ILicensingService, 並保留了所有的Native變數名及類名,所有類中部分以設定了固定參數格式的構造函數,枚舉等等。) 讓proguard.cfg起作用的做法很簡單,就是在eclipse自動生成的default.properties文件中加上一句「proguard.config=proguard.cfg」就可以了 完整的default.properties文件應該如下:view plain 1. # This file is automatically generated by Android Tools. 2. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3. # 4. # This file must be checked in Version Control Systems. 5. # 6. # To customize properties used by the Ant build system use, 7. # "build.properties", and override values to adapt the script to your 8. # project structure. 9. 10. # Project target. 11. target=android-9 12. proguardproguard.config=proguard.cfg 大功告成,正常的編譯簽名後就可以防止代碼被反編譯了。
㈡ 經過混淆的android安裝包,還有可能被反編譯么
有可能,但是還是很大的提高了閱讀難度,而且需要注意的是混淆並不會保護你圖片等資源,也就是除了代碼難以閱讀之外沒有其他幫助,只是增加破解者的難度時間,對其防止破解的作用意義不是很大。拿移動應用安全行業的第三方平台來說,在Android代碼混淆的基礎上,以源碼加殼保護、so庫核心代碼加殼保護、資源文件簽名保護、APK防二次打包保護等方面來對APK進行保護還是比混淆有用點!
㈢ 防止自己的APP被反編譯或破解,通常有哪些方法
混淆代碼:
Android APP的源碼進行混淆後混淆器將代碼中的所有變數、函數、類的名稱加密為簡短的英文字母代號,在APP被破解後增加破解者對代碼的閱讀難度。 但是混淆的功效只能運作在APP已經被破解後,而且只是增加破解者的難度時間,對其防止破解的作用意義不是很大。
防二次打包:
二次打包是指將APK拆包後重新打包,二次打包必將丟失原有的簽名。大多數的Android開發者都是將簽名信息作為認證標准,所以只要原有的簽名信息改變,APK就無法正常運行。但是如果將這個認證信息功能屏蔽掉,防二次打包就失效了!
我們先通過APK安全保護平台,對這款Android APK進行安全保護。
步驟如下:
登錄/注冊→上傳APK→等待系統加密→完成後下載APK→給APK簽名→完成!
注意:
在APK源代碼安全保護平台,個人信息要填寫完整,否則無法正常使用。APK加密完成後,系統會發出郵件通知加密完成。最後下載APK包再次完成簽名,就可以正常使用了!
㈣ app可以被反編譯到什麼程度
Android APK中的Java代碼可以被反編譯到什麼程度主要看APK的加密程度。
第一種情況:無混淆無加密無加殼。
直接利用Dex2jar和JD-GUI可把源碼從APK里摳出來,代碼邏輯清晰,基本上做到可復用,只是資源文件的引用需要計算一下。
第二種情況:混淆。
通常是利用Proguard做的防護。因為是對jar做的不可逆混淆(除非有mapping),因此不能還原成原來的代碼。但是代碼結構,代碼邏輯一致,只要花長時間對代碼進行梳理一樣可找准核心代碼,解密方法跟第一種一致。
第三種情況:加密。
這里以DexGuard為例。對於這種代碼加密的方法,在程序運行中必定會進行解密,只要抽出它解密的邏輯便可。PS:我自己做過DexGuard的解密,如果用Dex2jar反編譯看的話邏輯是不對的,一定要從Smali代碼看。後來發現網上已經有人做了。
解密的腳本:A look inside Dexguard
第四種情況:加殼。
這種情況跟第三種類似。無論你怎麼加殼,運行的時候必定是Dalvik可識別的Odex代碼,建議直接在內存里mp出來。這里推薦Xpose的ZjDroid。
加固可以在一定程度上保護自己核心代碼演算法,提高破解/盜版/二次打包的難度,緩解代碼注入/動態調試/內存注入攻擊等。
目前市面上有很多第三方加固的平台, 如果新應用發布前需要掃描或者加固的話,可以先試試免費的,例如騰訊御安全,建議自己先去掃描測試下。
㈤ android app怎麼防止反編譯
APK在PC上面就被看作一個壓縮格式文件,在手機上面它就算一個可執行格式文件。兩種格式對它的讀取要求也有區別,所以說利用這個區別來實現偽加密。對PC端來講偽加密的APK沒法被解包無法被反編譯,但是對android系統來說它完全不會影響正常的安裝運行(對4.2以前的系統)。
偽加密的原理:讀取APK的位元組,找到連續4位位元組標記為」P K 01 02」的後第5位位元組,如果是0表示不加密,如果是1就表示加密(偽加密就強行改成1 反偽加密就是把1改成0就可以了)。
2
偽加密前和偽加密後的對比圖如下:
偽加密前:
3
偽加密後:
END
使用第三方平台加密
步驟如下:
登錄/注冊→上傳APK→等待系統加密→完成後下載APK→給APK簽名→完成!
2
愛加密作為移動安全行業的第三方平台,為Android APP移動應用提供專業的加固保護方案,包括DEX文件保護、資源文件保護、XML主配文件保護、防二次打包保護、so文件保護、內存保護、高級混淆等,全方位保護Android App,防止被反編譯、破解等,維護廣大開發者朋友的切身利益!
㈥ 我想給app加密,但proguard這類的混淆作用不大。有什麼辦法、工具來防止app被反編譯。
混淆保護和防二次打包過時了,就算用了還是會暴露源代碼!無用~~~
我們公司用的是愛加密的APK保護,對資源文件和主配是文件的加密。保護源代碼不被破解,如果源代碼不暴露,那麼APP就安全多了~~~
希望我的回答能幫到你!
㈦ 對已經混淆的Android代碼,如何進行反編譯
android代碼混淆是指安卓開發者或者組織為了防止自己的產品敏感信息或者技術機密被人破解,而在生成apk文件的時候,通過設置一些替換規則,使java文件中指定的代碼類的名字或者成員名字變為沒有任何意義的字母,然後編譯成class文件的過程。
已經混淆過的android代碼反編譯出來的都是一些沒有任何意義的名字,是很難讀懂的。沒有好的辦法。
㈧ 我想反編譯 一個APK程序,但是那個APK程序的代碼被混淆了,導致APK反編譯失敗,請問這個問題怎麼解決
混淆是不會導致反編譯失敗的,只是說,代碼變得難以讀懂,而不會導致反編譯失敗!
混淆和反編譯是兩個互不相乾的概念。
反編譯失敗和JDK,APKTOOL等各種工具的版本有密切關系!
專業無源代碼的 安卓 APK 反編譯、修改,只有你想不到,沒有做不到
@@ 724949472
哦也!
㈨ Android源碼進行了混淆,怎麼通過反編譯查看
android代碼混淆是指安卓開發者或者組織為了防止自己的產品敏感信息或者技術機密被人破解,而在生成apk文件的時候,通過設置一些替換規則,使java文件中指定的代碼類的名字或者成員名字變為沒有任何意義的字母,然後編譯成class文件的過程。 已經混淆過的android代碼反編譯出來的都是一些沒有任何意義的名字,是很難讀懂的。沒有好的辦法。
㈩ 如何給自己的app加密,怎樣防止反編譯資源文件和防二次打包要怎麼做
app加密,防反編譯的辦法有很多。代碼混淆(proguard)也可以使用偽加密(apk本身是zip,對zip末尾加位元組的方式防止apktool逆向,但是該方法在電腦上有些手機助手無法識別apk文件,手機上可以識別)。還有就是可以交給第三方的加密平台,不需要什麼技術要求。同時也可以在XML文件查看有沒有添加東西。有家叫做愛加密的免費平台還不錯。