1. 程式人生 > >看 android 程式碼是否被混淆

看 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的程式碼是否被混淆過

 

    方案一:

        

 一、 下載dex2jar包,解壓

         二、把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沒有被混淆過。如下圖所示: