中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

安卓APP逆向分析與保護機制是怎樣的

這期內容當中小編將會給大家帶來有關安卓APP逆向分析與保護機制是怎樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

在鄒城等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供網站建設、網站設計 網站設計制作定制制作,公司網站建設,企業網站建設,成都品牌網站建設,營銷型網站建設,成都外貿網站建設,鄒城網站建設費用合理。

想知道Android App常見的保護方法及其對應的逆向分析方法嗎?

安卓APP安全包含很多內容,本次分享了混淆代碼、整體Dex加固、拆分 Dex 加固、虛擬機加固等方面。事實上,這些內容也是國內近幾年Android App安全保護的一種主要趨勢。

一、混淆代碼

Java代碼是非常容易反編譯的,作為一種跨平臺的、解釋型語言,Java 源代碼被編譯成中間“字節碼”存儲于class文件中。由于跨平臺的需要,這些字節碼帶有許多的語義信息,很容易被反編譯成Java源代碼。為了很好地保護Java源代碼,開發者往往會對編譯好的class文件進行混淆處理。

混淆就是對發布出去的程序進行重新組織和處理,使得處理后的代碼與處理前代碼完成相同的功能,而混淆后的代碼很難被反編譯,即使反編譯成功也很難得出程序的真正語義。ProGuard就是一個混淆代碼的開源項目,能夠對字節碼進行混淆、縮減體積、優化等處理。

Proguard處理流程圖如下所示,包含壓縮、優化、混淆、預檢四個主要環節:

安卓APP逆向分析與保護機制是怎樣的

壓縮(Shrink):檢測并移除代碼中無用的類、字段、方法和特性(Attribute);

優化(Optimize):對字節碼進行優化,移除無用的指令。優化代碼,非入口節點類會加上private/static/final,沒有用到的參數會被刪除,一些方法可能會變成內聯代碼;

混淆(Obfuscate):使用a、b、c、d這樣簡短而無意義的名稱,對類、字段和方法進行重命名;

預檢(Preveirfy):在Java平臺上對處理后的代碼進行預檢,確保加載的class文件是可執行的。

在分享中,鐘亞平展示了利用Proguard,對Dex2jar進行反編譯處理后的Apk效果示例:

安卓APP逆向分析與保護機制是怎樣的 
Proguard處理后

安卓APP逆向分析與保護機制是怎樣的    

Proguard混淆器不僅能夠保護代碼,而且能夠精簡編譯后的程序大小,減少內存占用。

混淆代碼逆向分析

如果想要反編譯混淆代碼,鐘亞平分享了一個國外的工具DEGUADR,它能夠通過統計的方式來解混淆。雖然這個工具的正確率達不到100%,但是能在一定程度上幫助反編譯代碼。

安卓APP逆向分析與保護機制是怎樣的    

使用DEGUADR解混淆的示例:

安卓APP逆向分析與保護機制是怎樣的    

com.xxxxx.common.util.CryptoUtil網站也提供了一種反編譯服務,如下所示:

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加固

為了加強Android保護強度,隨著安全技術的發展,又出現了新型的“加固技術”。DEX加固是對DEX文件進行加殼防護,防止被靜態反編譯工具破解而泄露源碼,最剛開始出現的是整體加固技術方案。

安卓APP逆向分析與保護機制是怎樣的    

整體加固技術的原理如上所示,包括替換application/classes.dex、解密/動態加載原classes.dex、調用原application相關方法、將原application對象/名稱設置到系統內部相關變量四大環節。其中最為關鍵的一步就是解密/動態加載原classes.dex,通過加密編譯好的最終dex源碼文件,然后在一個新項目中用新項目的application啟動來解密原項目代碼并加載到內存中,再把當前進程替換為解密后的代碼,能夠很好地隱藏源碼并防止直接性的反編譯。

整體Dex加固逆向分析

整體Dex加固逆向分析有兩種常用的方法。其一是在內存中暴力搜索 dex\n035,再 dump。以下是在32位系統中的效果示例:

安卓APP逆向分析與保護機制是怎樣的    

另一種方法就是通過HookdvmDexFileOpenPartial(void* addr, int len, DvmDex**)。

三、拆分Dex加固

隨著業務規模發展到一定程度,不斷地加入新功能、添加新的類庫,代碼在急劇膨脹的同時,相應的apk包的大小也急劇增加,那么簡單的整體加固方案就不能很好地滿足安全需求,在整體加固方案之外又出現了拆分加固的技術方案。

安卓APP逆向分析與保護機制是怎樣的    

但是如上所示,dex文件在加固時,針對中間缺失的一部分數據會以解密后的數據來替換,有的時候這種拆分替換也會導致數據不準確。那么到底應該拆分什么樣的數據呢?就需要了解一下dex文件的數據結構。

Dex文件結構極為復雜,以下圖示選取了其中較為重要的內容。事實上,dex文件是一個以class為核心組裝起來的文件,其中最重要的是classdata和classcode兩部分,有其特定的接口和指令數據,選取這兩部分來拆分的話,即使拆分出來也不會泄露class數據和字節碼數據,反編譯出來也不完整,安全性較高。

安卓APP逆向分析與保護機制是怎樣的    
   

拆分Dex加固逆向分析

對于dex拆分加固的逆向分析,如下所示,可以用classdata替換從而組裝成新的dex文件,雖然和原來的dex文件不會完全一致,但也在一定程度上復原了被拆分數據的樣子。

安卓APP逆向分析與保護機制是怎樣的        
   

但要注意的是,這種方法僅適用于被拆分出去的數據變形一次性完成,也就是說,在有其他保護思路的情況下盡量避免使用,而且即使有需要也盡量選在用到這個類的時候才去恢復。

此外還有一個更底層一些的工具dexhunter,這個工具較為前衛,但同時也有一些局限性,譬如部分指令數據會被優化,形成的代碼界面不是很美觀等等。

安卓APP逆向分析與保護機制是怎樣的        
   

四、虛擬機加固

虛擬機加固也屬于dex拆分加固的一種,它是對字節做了一些變化處理。如下所示,這是一個正常安卓系統中的代碼,在其中進行了虛擬機加固操作:

安卓APP逆向分析與保護機制是怎樣的        
   

以add-int v0, v1, v2、sub-int v0, v1, v2、mul-int v0, v1, v2這三條指令進行替換,然后進行加固編譯,這樣子操作后,即使把替換后的數據恢復了,也不會以add-int v0, v1, v2、sub-int v0, v1, v2、mul-int v0, v1, v2這三條指令進行替換,然后進行加固編譯,這樣子操作后,即使把替換后的數據恢復了,也不會變形成為之前的字節碼,安全系數較高。

虛擬機加固逆向分析—HOOK JNI 接口

這種方式下的逆向分析,一方面可以通過HOOK JNI 接口來實現,它有兩種實現方式。

其一是類成員/靜態變量操作相關接口,比如:

GetStaticDoubleFieldSetStaticDoubleField GetDoubleField SetDoubleField … 

(byte, object, int,long…)

其二是反射調用類方法,比如:

CallVoidMethodACallBooleanMethodA CallShortMethodA CallObjectMethodA …

CallStaticVoidMethodACallStaticBooleanMethodA CallStaticShortMethodA CallStaticObjectMethodA …

(byte, int, long,double …)

CallObjectMethodA(JNIEnv* env, jobject object, jmethoID method, …) 

安卓APP逆向分析與保護機制是怎樣的 
通過HOOKJNI 接口實現虛擬機加固逆向分析

通過HOOK JNI 接口不用逆向底層,就可以了解APP大致的調用流程。但是對于復雜的調用過程,或者虛擬化方法數量較多的情況,這種逆向分析手段看起來會比較混亂;對于不需要返射到Java層執行的指令,如算術、邏輯運算等,則無法監控到。

虛擬機加固逆向分析—分析指令操作碼映射

另一方面,也可以通過分析指令操作碼映射來逆向分析。在同一加固版本,或者映射關系相同的情況下,可以采取以下所示的方法:

安卓APP逆向分析與保護機制是怎樣的                        
                   

但在實際情況中,每次加固時的映射關系都是隨機變化的,如下所示,這種情況下就無法直接建立映射關系。

安卓APP逆向分析與保護機制是怎樣的                        
                   

不依賴于操作碼的映射關系只與虛擬機結構有關,所以需要根據偏移關系建立映射關系,從而進行逆向分析。

安卓APP逆向分析與保護機制是怎樣的                        
                   

安卓APP逆向分析與保護機制是怎樣的                        
                   

上述就是小編為大家分享的安卓APP逆向分析與保護機制是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創新互聯行業資訊頻道。

網頁標題:安卓APP逆向分析與保護機制是怎樣的
路徑分享:http://m.2m8n56k.cn/article42/jdscec.html

成都網站建設公司_創新互聯,為您提供動態網站服務器托管網站設計網站內鏈定制網站網站營銷

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站托管運營
主站蜘蛛池模板: 欧美精品伊人久久 | 久久这里只有精品视频99 | 欧美中文字幕一区二区三区 | 国产成人综合视频 | 成人综合网址 | 日韩一级片网址 | 成年女人午夜免费视频 | 日本黄色大片在线播放视频免费观看 | 久久精品国产只有精品6 | 在线毛片免费 | 古代级a毛片在线 | 97视频精品| 日韩无砖专区体验区 | 精品欧美亚洲韩国日本久久 | 亚洲欧美另类在线视频 | 日本精品高清一区二区2021 | 国产精品特黄一级国产大片 | 日本香蕉一区二区三区 | 一级毛片在线免费看 | 97免费在线 | 综合久久99久久99播放 | aaa级毛片 | 亚洲在线不卡 | 亚洲在线免费观看视频 | 国产精品v一区二区三区 | 欧美日韩顶级毛片www免费看 | 久久久久女人精品毛片 | 大陆60老妇xxxxhd | 欧美日韩a级片 | 欧美性aaa | 污全彩肉肉无遮挡彩色 | 久久频这里精品99香蕉久网址 | 精品视自拍视频在线观看 | rion美乳弹出来四虎在线观看 | 欧美aaa大片| 欧美日韩中| 黄a免费| 国产精品精品国产 | 成人做爰在线视频 | 一区二区日韩欧美 | 97人摸人人澡人人人超一碰 |