1. 程式人生 > >Android 混淆程式碼(eclipse篇)

Android 混淆程式碼(eclipse篇)

  • 程式碼混淆的確是一個操蛋的問題,不過也沒有想象中那麼操蛋。
  • 首先說明一下混淆的意義:1.增加反編譯的難度;2.壓縮apk的大小。
  • 下面我來簡單介紹一下,eclipse中怎麼去混淆程式碼,到AndroidStudio應該也是一樣的?
  • 步驟如下
  • 1.首先將project.properties的11行前面的#號去掉,將改行替換成
proguard.config=proguard-android.txt
  • 2.去sdk\tools\proguard目錄下複製proguard-android.txt檔案當eclipse專案的根目錄中。
    • 有些人可能沒有這個目錄,這個自行百度解決。。。
  • 3.理論上準備工作已經完成了,接下來export
    就可以生成一個混淆過的apk了。
  • 4.但是,有可能你的部分jar或者部分.java檔案不希望被混淆。那麼你可以keep掉。具體如何操作?比如,我想要保留BBBBBBBB的類名不被混淆,我就這樣寫;比如我要保留CCCCCCCCCCC的類名以及全部的屬性方法不被混淆,我就這麼寫;比如,我想保留CCCCCCCCCCC的內部類DUCK的全部屬性和方法,我就這麼寫。
-keep class com.pythonCat.indictors.BBBBBBBB
-keep class com.pythonCat.indictors.CCCCCCCCCCC {*;} 
-keep class com.pythonCat
.indictors.CCCCCCCCCCC$DUCK {*;}
  • 5.如果是你專案中使用到的jar包呢,理論上是直接被混淆,那麼我想保留呢?可以參照保留CCCCCCCCCCC的屬性方法類名的方式來。但是jar包中往往有很多類,這麼弄比較麻煩,那麼我怎麼弄呢?比如,我引用了gsonjar包,直接這樣
-keep class com.google.** { *; }
  • 以上的5點全部經過驗證了,混淆打包是OK的。需要注意的是使用gson時對應的bean檔案是需要進行保留不被混淆的。
  • 6.OK,既然混淆完畢,接下來就是選中當前專案–右鍵–匯出–EXPORTING Android Application –然後就是一路的next,需要建立keystore就建立,不需要就使用以前的,之後到finish
    。然後你的目標路徑就出現了一個你剛剛混淆打包出來的apk了。
  • 然後你就可以將這個apk釋出到應用市場讓千萬人下載使用了,也不用擔心apk被人破解了。

  • 好了,介紹這麼多,還是沒有看到真東西對不對?OK,下面就是我的一個小的混淆的DEMO,混淆的就是上面介紹的這些內容,保護的也就是上面說的,希望保護的內容。

  • 所以,實際上,我需要操作就是在proguard-android.txt新增這麼幾行就可以了:
-keep class com.pythonCat.indictors.BBBBBBBB
-keep class com.pythonCat.indictors.CCCCCCCCCCC {*;} 
-keep class com.pythonCat.indictors.CCCCCCCCCCC$DUCK {*;} 
-keep class com.google.** { *; }
-keep class com.pythonCat.indictors.Bean { *; }