安卓APP逆向分析與保護機制是怎樣的
想知道Android App常見的保護方法及其對應的逆向分析方法嗎?
在本次分享中,探討了多個面向的安卓APP安全,包括混淆程式碼、整體Dex加固、分割Dex加固和虛擬機器加固。這些內容已經成為國內近幾年Android App安全保護的主要趨勢。
一、混淆程式碼
Java程式碼是非常容易反編譯的,作為一種跨平台的、解釋型語言,Java 原始碼被編譯成中間「字節碼」儲存於class文件中。由於需要跨平台,這些字節碼包含大量語意訊息,容易被反編譯成Java原始碼。開發人員通常會對編譯好的class檔案進行混淆以更好地保護Java原始碼。
混淆就是將發佈出去的程式重新組織和處理,使得處理後的程式碼與處理前程式碼完成相同的功能,而混淆後的程式碼很難被反編譯,即使反編譯成功也很難得出程式的真正語意。 ProGuard是一個開源項目,它能對字節碼進行混淆、體積縮減和最佳化等處理。
Proguard處理流程圖如下所示,包含壓縮、最佳化、混淆、預檢四個主要環節:
壓縮(Shrink):偵測並移除程式碼中無用的類別、欄位、方法和特性(Attribute);
優化(Optimize):對字節碼進行最佳化,移除無用的指令。最佳化程式碼,非入口節點類別會加上private/static/final,沒有用到的參數會被刪除,有些方法可能會變成內聯程式碼;
混淆(Obfuscate):使用a、b 、c、d這樣簡短而無意義的名稱,對類別、欄位和方法進行重命名;
預檢(Preveirfy):在Java平台上對處理後的程式碼進行預檢,確保載入的class檔案是可執行的。
在分享中,鐘亞平展示了利用Proguard,對Dex2jar進行反編譯處理後的Apk效果範例:
Proguard處理後
Proguard混淆器不僅能夠保護程式碼,而且能夠精簡編譯後的程式大小,減少記憶體佔用。
混淆程式碼逆向分析
鐘亞平分享了一個名為DEGUADR的國外工具,它使用統計方法來解混淆程式碼,以便反編譯。儘管這個工具的準確性不是100%,但它仍能部分地幫助反編譯程式碼。
java.lang.String a(byte[]) -> encodeToStringjava.lang.String a(byte[],boolean,java.lang.String) -> a byte[] a(byte[],byte[]) -> encrypt byte[] b(byte[]) -> getKey byte[] b(byte[],byte[]) -> decrypt byte[] d(java.lang.String) -> getKey java.lang.String a(byte,char[]) -> a java.lang.String a(java.io.File) -> getHash java.lang.String a(java.lang.String) -> c java.lang.String b(java.lang.String) -> encode
三、拆分Dex加固
隨著業務規模發展到一定程度,不斷地加入新功能、增加新的類別庫,程式碼在急劇膨脹的同時,對應的apk包的大小也急劇增加,那麼簡單的整體加固方案就不能很好地滿足安全需求,在整體加固方案之外又出現了分割加固的技術方案。
但是如上所示,dex檔案在加固時,針對中間缺少的一部分資料會以解密後的資料來替換,有的時候這種拆分替換也會導致數據不準確。需要了解dex檔案的資料結構,才能確定應該拆分哪種類型的資料。
Dex檔案結構極為複雜,以下圖示選取了其中較為重要的內容。事實上,dex文件是一個以class為核心組裝起來的文件,其中最重要的是classdata和classcode兩部分,有其特定的接口和指令數據,選取這兩部分來拆分的話,即使拆分出來也不會洩漏class數據和字節碼數據,反編譯出來也不完整,安全性較高。
拆分Dex加固逆向分析
對於dex拆分加固的反向分析,如下所示,可用classdata替換從而組裝成新的dex文件,雖然和原來的dex文件不會完全一致,但也在一定程度上復原了被拆分資料的樣子。
但要注意的是,這種方法只適用於被分割出去的資料變形一次完成,也就是說,在有其他保護思路的情況下盡量避免使用,而且即使有需要也盡量選在用到這個類的時候才去恢復。
此外還有一個更底層一些的工具dexhunter,這個工具較為前衛,但同時也有一些局限性,譬如部分指令數據會被優化,形成的代碼界面不是很美觀等等。
四、虛擬機器加固
對位元組進行處理是虛擬機器加固的一種方式,也可視為dex分加固的一種。以下是經過虛擬機器加固處理的常規的Android系統程式碼
##
GetStaticDoubleFieldSetStaticDoubleField GetDoubleField SetDoubleField … (byte, object, int,long…)其二是反射呼叫類別方法,例如:
CallVoidMethodACallBooleanMethodA CallShortMethodA CallObjectMethodA …CallStaticVoidMethodACallStaticBoolean,A CallStaticShort#A CallStaticObjectMethodMethod#fby#; int, long,double …)CallObjectMethodA(JNIEnv* env, jobject object, jmethoID method, …)透過HOOKJNI 介面實現虛擬機器加固分析
使用HOOK JNI介面可以了解APP大致的呼叫流程,無需進行底層逆向。但對於複雜的呼叫過程,或是虛擬化方法數量較多的情況,這種逆向分析手段看起來會比較混亂;對於不需要返射到Java層執行的指令,如算術、邏輯運算等,則無法監控到。
中下對上進行中所示時隨機化的情況下隨機化關係圖下隨機關係所示,
我。
#
以上是安卓APP逆向分析與保護機制是怎樣的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

京東商城APP實名認證怎麼搞?京東商城是許多朋友常用的網路購物平台,大家在購物前,最好先進行實名認證,這樣才能享受到完整的服務,獲得更好的購物體驗。以下帶來京東商城實名認證方法,希望對網友們有幫助。 1.安裝並開啟京東商城,接著登入個人帳號;2、然後點選頁面下方【我的】,進入個人中心頁面;3、之後再點選右上角的【設定】小圖標,前往設定功能介面;4、選擇【帳號與安全】這一項,來到帳戶設定頁面;5、最後再點擊【實名認證】選項,前往填寫實名資訊;6、安裝系統要求填寫個人真實信息,完成實名認證

還是以大神apk為例,透過前面分析app解密lua腳本,我們能夠解密大神apk的lua腳本,現在我們來解密其資源(設定檔和圖片等)。我們以比較重要的設定檔為例,未解密之前:檔案頭也有簽名值:fuckyou!。看到這,我們首先就想到是不是也是用xxtea加密的,我們用上面的方法,先xxtea解密,再解壓,發現依舊是亂碼,在操作的過程中就出現了錯誤,顯然,要否定我們剛才的猜想。我們繼續按部就班的解密設定檔。稍微思考一下,文件頭部是:fuckyou!如果想要對文件進行解密,那麼不可避免的需要處理

微軟在今年稍早推出了Windows11安全功能SmartAppControl。當時,微軟將其描述為「阻止不受信任或具有潛在危險的應用程式」的保護工具。當時該工具的獨特之處在於它決定了它是否應該在Windows11設備上運行。 SmartAppControl一開始以評估模式運作;正是在這種模式下,應用程式決定是否應該開啟它。微軟確實透露用戶可以在Windows安全應用程式的應用程式和瀏覽器控制部分啟用智慧應用程式控制。僅根據Microsoft的說法,SmartAppC

AppStore是iOS相關應用程式的市場。在這裡,您還可以找到免費應用程式和付費應用程式。應用程式可以是遊戲應用程式、提高工作效率的應用程式、實用應用程式、社交媒體應用程式以及更多類別的應用程式。您可能已經從AppStore下載或購買了許多適用於iPhone的應用程式。現在您可能想知道如何查看在App Store中購買的應用程式的購買記錄。有時,出於隱私原因,您可能需要從購買歷史記錄中隱藏某些購買。在本文中,我們將指導您尋找購買歷史記錄以及如何根據需要從購買歷史記錄中刪除/隱藏購買。第1部

在全球範圍內,Apple公司的產品和服務一直備受用戶喜愛。註冊一個香港AppleID將帶給用戶更多的便利和特權,讓我們一起來了解一下註冊香港AppleID的步驟以及需要注意的事項。如何註冊香港AppleID在使用蘋果設備時,許多應用程式和功能都需要使用AppleID進行登入。如果您想下載香港地區的應用程式或享受香港AppStore的優惠內容,那麼註冊一個香港AppleID就非常必要。本文將詳細介紹如何註冊香港AppleID的步驟以及需要注意的事項。步驟:選擇語言與地區:在蘋果設備上找到「設定」選項,進入

中國聯通app能夠輕鬆的滿足大家的使用,多樣的功能,解決你們的需求,想要辦理各種業務,都可以在這裡輕鬆的搞定,有不需要的都可以在這裡及時的退訂掉,有效的避免後續的損失,很多人在使用手機時,有時感覺流量不夠用,就購買了額外的流量包,但下個月又不想要要,就想要馬上的退訂掉,在這裡小編為大家提供退訂的方法,讓需要的朋友們,都可以來使用起來! 在中國聯通app中,找到右下角的「我的」選項,點擊它。 在我的介面裡,滑動我的服務一欄,點擊其中的「我已訂購」選

app全名為“Application”,即應用程式的縮寫,是指針對行動裝置開發的一種軟體應用。 app的出現為使用者提供了更多種類的行動應用程式選擇,滿足了使用者在不同場景下的各類需求。 app的開發過程涉及軟體設計、程式設計、測試等多個環節,同時也需要考慮設備相容性、效能最佳化、安全性等方面的問題。

近期,作者發現了Facebook安卓APP應用的一個深度連結漏洞,利用該漏洞,可以將用戶手機上安裝的Facebook安卓APP應用轉變成後門程式(Backdoor),實現後門化。另外,利用該漏洞還可以重打包FacebookAPP,並將其傳送給特定目標受害者安裝使用。以下就來看看作者對此漏洞的發現過程,以及如何透過Payload構造,最終將其轉化為FacebookAPP實際生產環境中的安全隱患。漏洞發現通常做眾測時,我會先認真了解目標系統的應用機制。在我的上一篇部落格中,我已經分享了透過解析Face
