Android應用安全防護的基本策略(1)--混淆

前言

記錄學習逆向的一點一滴。

混淆機制

目前混淆分爲代碼和資源混淆,混淆不僅加大了反編譯的難度,同時也是減小應用安裝包的大小的一種方式。

代碼混淆

代碼混淆參考:
Android Studio混淆筆記
ProGuard常見問題及解決套路
Android 混淆:proguard實踐

反編譯工具:
androiddevtools
一般可用jadx

資源混淆

資源混淆使用的是微信的AndResGuard插件,需要注意的是該github上的README中的沒有將gradle配置區分開。
實際配置如下:
1.在項目的根目錄的build.gradle中,增加插件依賴,如下:

buildscript {
    
    repositories {
    	// AS默認的,可忽略
        google()
        jcenter()
    }
    
    dependencies {
    // 編寫文章時的插件版本是1.2.17
        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.17'
    }
}

2.在模塊的build.gradle中配置如下:


android {
	...省略一千字
}

apply plugin: 'AndResGuard'
andResGuard {
    // mappingFile = file("./resource_mapping.txt")
    mappingFile = null
    use7zip = true
    useSign = true
    // 打開這個開關,會keep住所有資源的原始路徑,只混淆資源的名字
    keepRoot = false
    // 設置這個值,會把arsc name列混淆成相同的名字,減少string常量池的大小
    fixedResName = "arg"
    // 打開這個開關會合並所有哈希值相同的資源,但請不要過度依賴這個功能去除去冗餘資源
    mergeDuplicatedRes = true
    whiteList = [
            // for your icon
            "R.drawable.icon",
            // for fabric
            "R.string.com.crashlytics.*",
            // for google-services
            "R.string.google_app_id",
            "R.string.gcm_defaultSenderId",
            "R.string.default_web_client_id",
            "R.string.ga_trackingId",
            "R.string.firebase_database_url",
            "R.string.google_api_key",
            "R.string.google_crash_reporting_api_key"
    ]
    compressFilePattern = [
            "*.png",
            "*.jpg",
            "*.jpeg",
            "*.gif",
    ]
    sevenzip {
        artifact = 'com.tencent.mm:SevenZip:1.2.17'
        //path = "/usr/local/bin/7za"
    }

    /**
     * 可選: 如果不設置則會默認覆蓋assemble輸出的apk
     **/
    // finalApkBackupPath = "${project.rootDir}/final.apk"

    /**
     * 可選: 指定v1簽名時生成jar文件的摘要算法
     * 默認值爲“SHA-1”
     **/
    // digestalg = "SHA-256"
}

3.執行打包命令與平常打包命令沒有什麼區別,只是將assemble換爲resguard:
例如:
原先執行命令:gradlew assembleRelease
更換後:gradlew resguardRelease
打包以後會在release下生成新的目錄,紅色框框即是資源混淆後簽名的apk:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章