簡單說說 Android 混淆和加固

2021-09-29 16:23:16 字數 984 閱讀 4520

混淆:

針對專案**,**混淆通常將**中的各種元素(變數、函式、類名等)改為無意義的名字,使得閱讀的人無法通過名稱猜測其用途,增大反編譯者的理解難度。

雖然**混淆可以提高反編譯的門檻,但是對開發者本身也增大了除錯除錯的難度。開發人員通常需要保留原始未混淆**用於除錯。

加固:針對apk,加固是多維度的安全防護方案,包括反破解、反逆向、防篡改等,可以防止應用被各類常見破解工具逆向,安全性要遠大於單純的**混淆。

以上兩種方式 混淆用於讓apk被反編譯後獲取的**難理解,加固用於讓apk難於被反編譯。兩種操作都是對專案的安全措施,兩個操作是不衝突的,可以選擇其一,也可以兩個操作都做。

加固原理:

對原始dex檔案進行加密,並將加密後的dex檔案和相關的存放到assert目錄裡

用脫殼dex檔案替換原始apk檔案裡的dex檔案;脫殼dex檔案的作用主要有兩個,乙個是解密加密後的dex檔案;二是基於dexclassloader動態載入解密後的dex檔案

因為原始apk檔案已經被修改,所以需要刪除原始apk的簽名資訊,即刪除meta-inf目錄下的.rsa、.sf 和manifest.mf檔案

生成加固後的apk檔案

對加固後的apk檔案進行簽名,apk加固完成。

原理分析:

1.為什麼要對原始dex進行加密,同時用脫殼dex檔案替換原始dex檔案?大部分的apk反編譯工具(dex2jar、apktools、jui等)都是對dex檔案進行反編譯,將dex檔案反編譯成smail,然後再轉化成class檔案進行閱讀和修改。用脫殼dex替換原始dex檔案之後,用上面的反編譯工具反編譯apk檔案,只能看到脫殼程式的class檔案,看不到apk本身的class檔案。對dex檔案進行加密,這樣即使第三方拿到了dex檔案,以為無法解密,也就無法對其進行解析和分析。

3.dex加固主要是防止被靜態反編譯,進而獲取原始碼並修改

360加固

阿里加固

梆梆加固 還有就是 愛加密

這裡有個第三方免費加固對比 加固對比

簡單說說android的執行緒封裝

對執行緒的c 封裝 其實api已經寫得很清楚了 封裝的檔案 frameworks base include utils threads.h 這裡不討論具體實現,具體實現是和系統相關聯的 首先anroid提供了幾個與直接建立執行緒的函式 inline bool createthread thread ...

簡單說說MPEG

mpeg 1 mpeg 2和mpeg 4。mpeg 3 原本目標是為高畫質晰度電視 hdtv 設計,隨後發現mpeg 2已足夠hdtv應用,故mpeg 3的研發便中止。音訊物件 video audio objects 的編碼 3d內容 低位元率編碼 low bitrate encoding 和數字版...

簡單說說委託

在c 中,大多時候,方法的引數是資料,但有時我們會想將 方法 作為引數,這時,我們就可以用委託。委託一般情況下會和事件一起使用,事件說白了也是特殊的乙個方法。先看個例子吧 有很多方法,比如求平方,求階乘 想讓使用者輸入值,求該值的平方,階乘 using system using system.col...