国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android 混淆使用及其字典混淆(Proguard)

這篇具有很好參考價值的文章主要介紹了Android 混淆使用及其字典混淆(Proguard)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.使用背景

ProGuard能夠通過壓縮、優(yōu)化、混淆、預(yù)檢等操作,檢測并刪除未使用的類,字段,方法和屬性,分析和優(yōu)化字節(jié)碼,使用簡短無意義的名稱來重命名類,字段和方法。從而使代碼更小、更高效、更難進(jìn)行逆向工程。

Android代碼混淆,又稱Android混淆,是一種Android APP保護(hù)技術(shù),用于保護(hù)APP不被破解和逆向分析。

所以在大部分的項目里,基本都會把混淆打開。

Tips:如果開啟了混淆,Proguard默認(rèn)情況下會對所有代碼,包括第三方包都進(jìn)行混淆,可是有些代碼或者第三方包是不能混淆的,這就需要我們手動編寫混淆規(guī)則來保持不能被混淆的部分。例如Gson庫,Litepal庫,有些東西用到的話,就得去proguard-rules.pro文件里配置一下。

2.開啟混淆

需要在app的build.gradle文件里進(jìn)行配置。

android {
    ......
    defaultConfig {
         
   }
    buildTypes {
        release {
            minifyEnabled true      // 開啟代碼混淆(必須的哈)
            zipAlignEnabled true   
            shrinkResources true   
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    
}
  1. minifyEnabled:是否進(jìn)行代碼混淆(開混淆就必須要這個哈)
  2. zipAlignEnabled:是否進(jìn)行Zip壓縮優(yōu)化(可選)
  3. shrinkResources:是否移除未被使用的資源(可選)
  4. proguardFiles:混淆規(guī)則配置文件
  5. proguard-android.txt:AndroidStudio默認(rèn)自動導(dǎo)入的規(guī)則,這個文件位于Android SDK根目錄\tools\proguard\proguard-android.txt。這里面是一些比較常規(guī)的不能被混淆的代碼規(guī)則。
  6. proguard-rules.pro:針對自己的項目需要特別定義的混淆規(guī)則,它位于項目每個Module的根目錄下面,里面的內(nèi)容需要我們自己編寫。

3.Proguard配置規(guī)則

即在proguard-rules.pro里進(jìn)行編寫配置。

這兒我就不細(xì)說了,因為平時我也用不了那么多,這兒貼一個比較全的鏈接

Android 代碼混淆規(guī)則 - 掘金

Tips:

AndroidMainfest中的類不混淆,所以四大組件和Application的子類和Framework層下所有的類默認(rèn)不會進(jìn)行混淆。自定義的View默認(rèn)也不會被混淆;所以像網(wǎng)上貼的很多排除自定義View,或四大組件被混淆的規(guī)則在Android Studio中是無需加入的(我目前看來是如此的)

4.字典混淆

我的配置:

# 混淆的壓縮比例,0-7
-optimizationpasses 5
# 指定不去忽略非公共的庫的類的成員
-dontskipnonpubliclibraryclassmembers
# 指定混淆是采用的算法
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
# 指定外部模糊字典 proguard-chinese.txt 改為混淆文件名,下同
-obfuscationdictionary proguard-1il.txt
# 指定class模糊字典
-classobfuscationdictionary proguard-1il.txt
# 指定package模糊字典
-packageobfuscationdictionary proguard-1il.txt

其實就是指定

  • -obfuscationdictionary dictionary_path:指定外部模糊字典
  • -classobfuscationdictionary dictionary_path:指定class模糊字典
  • -packageobfuscationdictionary dictionary_path:指定package模糊字典

這三個的模糊字典。讓你的代碼,搞起來特別沒得可讀性。

這個txt文件怎么生成,你可以自己寫個腳本生成,也可以用網(wǎng)上已經(jīng)寫好的。

https://github.com/WrBug/FrenziedProguard/tree/master/proguard-file

下載好文件后,放在和proguard-rules.pro同級的文件目錄里面:

android 混淆字典,Android開發(fā),android

我使用的是 proguard-1il.txt,使用后反編譯查看,首先是包名:

android 混淆字典,Android開發(fā),android

其次是內(nèi)容:

android 混淆字典,Android開發(fā),android

可以看到,里面的各種對象,方法,變量名,參數(shù)等等都被混淆了,變化非常之大。

5.是否生效

使用反編譯工具Jadx查看

GitHub - skylot/jadx: Dex to Java decompiler文章來源地址http://www.zghlxwxcb.cn/news/detail-776771.html

到了這里,關(guān)于Android 混淆使用及其字典混淆(Proguard)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Android】自定義Spinner控件及其使用

    【Android】自定義Spinner控件及其使用

    在 res/values/ 文件夾下新建一個 arrays.xml 文件: activity_main.xml 文件: 2.1 dropdown模式 效果: 2.2 dialog模式 效果: 在 res/drawable/ 文件夾下新建兩個文件: (1) shape_for_custom_spinner.xml 文件(用來定義下拉框的樣式): (2) selector_for_custom_spinner 文件(用來定義Spinner控件本身的樣

    2023年04月16日
    瀏覽(20)
  • android 混淆配置

    android 發(fā)布正式版本都會涉及到代碼加密,防止反編譯,這就涉及到混淆文件的配置 1、在app模塊的build.gradle中配置 然后在其中引用的proguard-rules.pro文件中配置混淆即可 注:這里的app模塊是指在build.gradle中配置的是 因為有的工程中有多個模塊 2、proguard-rules.pro文件中配置混淆

    2024年02月01日
    瀏覽(21)
  • android 混淆

    # 指定代碼的壓縮級別 0 - 7(指定代碼進(jìn)行迭代優(yōu)化的次數(shù),在Android里面默認(rèn)是5,這條指令也只有在可以優(yōu)化時起作用。) -optimizationpasses 5 # 混淆時不會產(chǎn)生形形色色的類名(混淆時不使用大小寫混合類名) -dontusemixedcaseclassnames # 指定不去忽略非公共的庫類(不跳過library中的非

    2024年02月05日
    瀏覽(16)
  • 【學(xué)習(xí)】從零開發(fā)的Android音視頻開發(fā)(13)——MediaCodec到OMX框架過程及其硬解碼

    【學(xué)習(xí)】從零開發(fā)的Android音視頻開發(fā)(13)——MediaCodec到OMX框架過程及其硬解碼

    在講NuPlayer時,NuPlayer解碼部分會創(chuàng)建MediaCodec,并且最終到達(dá)OMX框架,先看MediaCodec的 init 函數(shù) 從init函數(shù)中可以看到,首先創(chuàng)建了 ACodec ,并且初始化了 ALooper 、 AMessage ,由于ACodec繼承自 AHandler ,那么一套消息機制就有了。最后發(fā)送 kWhatInit 消息,收到消息的邏輯位于ACodec.

    2023年04月08日
    瀏覽(32)
  • Android 根據(jù)mapping文件還原混淆代碼

    app發(fā)布的時候都會做混淆處理,但是當(dāng)發(fā)生錯誤的時候,只能看到一些混淆后的代碼很難看清楚哪里錯了,那么如何將混淆后的代碼進(jìn)行還原呢? Android sdk 目錄下有專門的工具可以幫助我們進(jìn)行還原。 在還原混淆之前,我們需要app的混淆mapping文件,該文件路徑: 混淆文件的

    2024年02月09日
    瀏覽(26)
  • Android 馬甲包 google市場混淆技術(shù)方案

    指定 混淆字典 在app的gralde里配置混淆字典 -obfuscationdictionary dict.txt#外部字典 -classobfuscationdictionary dict.txt #類字典 -packageobfuscationdictionary dict.txt #包字典 dict.txt 文件內(nèi)容類似這樣的: zguqnx mvdmuyh wmws jwomtp nhmhn zvlogo pomcwh bhdnzul osxbj gojb ctvkrg srmar sgkarnqi byghdn tvebtxw uxdhno qmjac pgxa

    2024年02月09日
    瀏覽(24)
  • 本倉庫主要用來收集一些 Android 開發(fā)中常用的第三方 UI 庫及其簡單 Demo

    本倉庫主要用來收集一些 Android 開發(fā)中常用的第三方 UI 庫及其簡單 Demo

    | 第三方庫 | 介紹 | Demo | 使用說明 | | — | — | — | — | | CircleImageView | 顯示圓形圖片 | CircleImageViewDemo | Android UI Libs 之 CircleImageView.md | | android-gif-drawable | 顯示 gif 圖片 | android-gif-drawabledemo | Android UI Libs 之 android-gif-drawable.md | | AndroidSwipeLayout | 滑動布局,可以實現(xiàn)側(cè)滑菜單與側(cè)

    2024年04月15日
    瀏覽(25)
  • 【Python編程】字典及其使用

    【Python編程】字典及其使用

    整理是為了方便自己學(xué)習(xí)記憶使用。 參考書籍《Python編程--從入門到實踐》(第2版),[美] 埃里克·瑪瑟斯。 ????????字典是由 鍵和值 組成的,以成對的形式出現(xiàn)。 ? 鍵:值 child = { \\\'age\\\' : 5,? \\\'color\\\' : \\\'red\\\' } ????????上述表達(dá)式,是字典的基本組成。其中age和color是鍵

    2024年02月08日
    瀏覽(12)
  • 反編譯(混淆)的微信小程序使用蘋果ios真機調(diào)試時報錯VM2_INTERNAL_STATE_DO_NOT_USE_OR_PROGRAM,安卓(android)一切正常

    改反編譯混淆的小程序語法寫錯了也會報這個錯誤: 報錯原因很可能是你哪個地方改的(或?qū)懙模┯袉栴},語法錯誤、變量未定義、使用了不存在的參數(shù)。 我這里是使用了 console.table() 方法 出錯原因:IOS上的Webview并不支持 console.table() 方法,因此會導(dǎo)致代碼無法運行。

    2024年02月12日
    瀏覽(32)
  • Android串口開發(fā)之使用JNI實現(xiàn)ANDROID和串口通信

    Android串口開發(fā)之使用JNI實現(xiàn)ANDROID和串口通信

    導(dǎo)語:Android串口通信在物聯(lián)網(wǎng)、智能家居等領(lǐng)域具有廣泛的應(yīng)用。本文將詳細(xì)介紹如何使用JNI技術(shù)實現(xiàn)Android設(shè)備與串口的通信,包括串口的打開、設(shè)置參數(shù)和讀寫數(shù)據(jù)等過程。 在開始介紹Android串口開發(fā)之前,我們需要了解以下幾個概念: JNI:JNI(Java Native Interface)是一種

    2024年02月07日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包