天天看點

Android Studio 混淆打包apk使用 自定義字元

先看混淆後的dex檔案截圖

Android Studio 混淆打包apk使用 自定義字元
  1. 通過修改開源項目proguard下載下傳到本地,修改類SimpleNameFactory的charAt方法,再重打包proguard.jar,重命名并替換到C:\Users\Administrator.gradle\caches\modules-2\files-2.1\net.sf.proguard\proguard-base\xxx目錄下的proguard-base-xxx.jar(不同裝置目錄可能不同),通過unicode字元範圍擷取指定字元集合,示例采用的是中文和韓文的字元範圍均混淆成功。

//原代碼
private char charAt(int index)
{
       return (char)((index < CHARACTER_COUNT ? 'a' - 0: 'A' - CHARACTER_COUNT) + index);
}
   
//修改為
private static final int CHARACTER_COUNT = 0x318E-0x3131;//韓文字元集,中文注釋此處可能有警告
private static final int CHARACTER_START = 0x3131;
private static final int CHARACTER_END = 0x318E;
private char charAt(int index)
{
    return (char)((index < CHARACTER_COUNT ? CHARACTER_START - 0 :CHARACTER_END - CHARACTER_COUNT) + index);
}
           
  1. 然後在AS中配置相關混淆模闆并開啟混淆,生成apk檢視dex檔案如圖。

buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
           
  1. 重新生成proguard.jar示例位址點選下載下傳,一鍵生成proguard.jar如圖
    Android Studio 混淆打包apk使用 自定義字元