看 android 程式碼是否被混淆
4、 常見的不能混淆的android code
一、android系統元件,系統元件有固定的方法被app呼叫。
二、被android resource檔案引用到的,名字已經固定,也不能混淆,比如自定義的View。
三、android parcelable,需要使用android序列化。
四、其他android官方建議不混淆的,如:android.app.backup.BackupAngentHelper,android.preference.Preference,com.android.vending.licensing.ILicensingService
五、java序列化方法,系統序列化需要固定的方法
六、本地方法,不能修改本地方法名
七、annotations註釋
八、資料庫驅動
九、有些resource檔案
十、用到反射的地方
總結:Android的四大元件,第三方jar包不能混淆
5、如何測試一個apk的程式碼是否被混淆過
方案一:
二、把apk包的字尾名改為.zip
三、把apk壓解壓拿到classes.dex檔案,並放到dex2jar所在的目錄下
四、執行命令dex2jar.exe classes.dex
五、下載jd-gui
六、把jar包載入到jd.gui,檢視原始碼,原始碼中的類名,方法名,變數名是否已經改變
方法二:
一、下載apktool工具
二、執行apktool.bat d xxx.apk,把apk反編譯成smali
三、如果想要進一步檢視原始碼,可下載smali2java
四、使用smali檔案的檔名進行分析,如果存在1個或1個以上的資源類的smali檔案,就可以證明該apk沒有被混淆過。如下圖所示: