1、特定類的public函數(shù)不做實際的事情,只做簡單處理后調(diào)用private函數(shù)。proguard對會對一些特定類的public函數(shù)不做混淆,以便被AndroidManifest.xml和各種layout引用。
專注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站設(shè)計服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)三明免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
2、代碼混淆有兩種重要功能。其一,混淆代碼。其二,優(yōu)化代碼。進行代碼混淆的程序被稱為代碼混淆器(混淆工具)。進行代碼混淆的意義主要在于對代碼進行一定程度的加密。
3、shrinkResources 去除無用資源 ,要注意,這個功能的使用依賴于code shrinking, 所以minifyEnabled也必須打開。proguard-rules.pro 為混淆規(guī)則文件,放置在Module根目錄下。
4、第一個文件是描述文件,第二個文件是配置文件。如果要實現(xiàn)代碼混淆,需要修改第二個文件。打開第二個文件,如下:其中紅線部分說,如果你要實現(xiàn)代碼混淆,你需要把下面一行給反注釋掉。
5、因為是對接口名進行替換,如果出現(xiàn)混淆問題的話,log里面一定會有類似 這個時候只需要對相關(guān)接口進行例外(-keep)即可,然后用android-studio,直接打開或者dex2jar進行反解可以看到相關(guān)的接口是否被簡單替換。
android源碼被混淆了還原方法為:得到 classes.dex文件;直接用機器上的解壓軟件 打開 .apk 文件,解壓出 classes.dex 文件。
因為是對接口名進行替換,如果出現(xiàn)混淆問題的話,log里面一定會有類似 這個時候只需要對相關(guān)接口進行例外(-keep)即可,然后用android-studio,直接打開或者dex2jar進行反解可以看到相關(guān)的接口是否被簡單替換。
運行apktool.bat d xxx.apk,把apk反編譯成smali 如果想要進一步查看源碼,可下載smali2java 使用smali文件的文件名進行分析,如果存在1個或1個以上的資源類的smali文件,就可以證明該apk沒有被混淆過。
改為 call %java_exe% -jar %PROGUARD_HOME%\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9 就ok了。
因為是對接口名進行替換,如果出現(xiàn)混淆問題的話,log里面一定會有類似 這個時候只需要對相關(guān)接口進行例外(-keep)即可,然后用android-studio,直接打開或者dex2jar進行反解可以看到相關(guān)的接口是否被簡單替換。
混淆是不會導(dǎo)致反編譯失敗的,只是說,代碼變得難以讀懂,而不會導(dǎo)致反編譯失?。?混淆和反編譯是兩個互不相干的概念。
布局混淆 布局混淆是指刪除或者混淆軟件源代碼或者中間代碼中與執(zhí)行無關(guān)的輔助文本信息,增加攻擊者閱讀和理解代碼的難度。
reactor主界面上就有幾個復(fù)選框,試一下全部打勾,然后點proctect,混淆后的Dll再用反編譯軟件看看其中的代碼,lz自然會知道結(jié)果。
如果要對apk進行混淆,你要先告知gradle這個app需要混淆,并告知其混淆規(guī)則。告知gradle需要混淆的代碼 在Project/app/build.gradle中把minifyEnabled設(shè)置為true,表示說打包時需要執(zhí)行混淆操作。
設(shè)置minifyEnabled true,就會在打包的時候進行代碼混淆處理. 其中proguard-android.txt不用管,在sdk目錄里面,主要是配置了proguard.cfg文件。
運行apktool.bat d xxx.apk,把apk反編譯成smali 如果想要進一步查看源碼,可下載smali2java 使用smali文件的文件名進行分析,如果存在1個或1個以上的資源類的smali文件,就可以證明該apk沒有被混淆過。
兩種方式,一種開發(fā)工具eclipse,還有就是用apktool工具。 I、只要Run As Android Application 過,到工作目錄的bin文件夾下就能找到與項目同名的apk文件。