日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

应用程序文件Android安全分析挑战:运行时篡改Dalvik字节码

發布時間:2025/3/21 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 应用程序文件Android安全分析挑战:运行时篡改Dalvik字节码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

發一下牢騷和主題無關:

????本文章由Jack_Jia編寫,轉載請注明出處。??

????文章接鏈:http://blog.csdn.net/jiazhijun/article/details/8833710

????作者:Jack_Jia ???郵箱:?309zhijun@163.com

????

? ? ?動移互聯網已是一種勢趨,僅2012年就有45億應用程序載下量。伴隨著動移互聯網的火爆,浩繁攻擊者也被吸引到這個臺平,動移臺平意惡軟件呈現爆炸式長增態勢。與PC臺平不同的是,PC臺平有量大的反病毒包和意惡軟件析分工具,而新興的動移互聯網卻乏缺大強的析分工具和技巧。這些工具和技巧將是堅持動移互聯網闊別意惡軟件和意惡應用程序的鍵關。它們一般來自于學術界和全安界的研討員人,但是它們都有必定的陷缺,不并合適有所的情況,入加全安社區可以幫助我們習學和開展android應用的析分方法。

????

????一、分析

? ? ? 首先分析一下動移應用程序的析分方法和景背。我們可以采取很多工具來對應用程序行進析分,Android應用程序的析分一般都是基于APK文件,APK文件代表了一個應用程序。
? ? ?它存儲了以下內容:

????
? ? ? ? ? ?1、程序邏輯:dex字節碼和so地本庫。
? ? ? ? ? ?2、元據數信息:AndroidManifest.xml文件。
? ? ? ? ? ?3、源資文件:圖像或其他類型據數。

????
? ? ?析分工具一般采取以下兩種應用析分方法:

????
? ? ? ? ? 1、靜態析分:該方法搜集有關應用程序的信息,但程序代碼不行執。
? ? ? ? ? 2、態動析分:該方法行執應用程序,同時搜集應用運行為行。

????
? ? ?這兩種析分技巧都各有利弊,在Android逆向析分范疇,很多工具都是基于靜態析分技巧,也有于用態動析分的沙箱系統,但受限于態動析分系統的交互靈活性,析分師常常在那些分部要需態動析分上沒有充足的控制力。在逆向工程中程過,析分員人一旦肯定了感興趣的應用程序分部,它們更側重于用使靜態析分工具。問題是如何找到那些分部呢?靜態析分技巧的另一個要重陷缺是不知道什么被真正行執和程序上下文在某特定點的行執否是有效。當我們假設應用程序代碼在運行中程過不會轉變時,析分任務將是非常易容的,我們可以通過析分apk文件來識別程序代碼邏輯,混雜的應用程序會給析分員人帶來必定的戰挑。隨著運行時改動Dalvik字節碼的解講,我們將暴露這些基于代碼流析分的工具的制限和問題。

????
? ? ?我們將在接下來的分部描述一下應用程序的基本組成分部,并指出要重的運行時組件。這將使我們更易容白明當運行crackme時發生了什么事情。后之,我們將報告于用欺騙靜態析分工具所采取的要重技巧。最后我們會進入crackme戰挑的細節。

????

????二、應用程序行執的上下文

????

每日一道理
記不清有多少個夜晚,在我翻閱紙張的指間滑落;記不清有多少支蠟燭,在我的凝視中化為灰燼。逝者如斯,我時時刻刻會聽見自己對生命承諾的余音,感到歲月的流轉在漸漸稀釋我的年少無知,我愿自己是一只上足了發條的時鐘,在晝夜不停的流轉中留下自己充實的每一刻。

? ? ? 應用程序的生命周期開始于zygote程進的fork方法,因為它已先預加載了Android框架,所以應用程序不必再花時間加載這些基礎類,同時這也可以有效低降體整的內存開銷。在新的程進低降限權后之,它加載了apk文件中的classes.dex文件,該文件包含了可被Dalvik虛擬機(DVM)釋解行執的Dalvik字節碼,代表了應用程序邏輯。此外,應用程序還帶有可以在運行時態動加載的Native庫。因為Dalvik虛擬機和Native庫運行在統一程進中,因此它們擁有同相的限權。一個型典的(收縮的)應用程序的內存布局如圖1所示。

????

????

????

圖1型典的APP內存布局

? ? ? ?我們可以看到,Android框架和同享庫及dex文件一樣被映射到我們的程進。我們的dex文件字節碼被映射為只讀。

????

????三、改動技巧

????

? ? ? ?回到靜態析分工具的話題,如果Dalvik字節碼在運行時不能轉變的話,靜態析分工具將能很好的任務。因為我們可以直接從APK文件中提取的出和運行時相匹配的字節碼。你可能會說這類假設是建立的,因為dex文件映射為只讀,所以Dalvik指令集是不夠能修改的字節碼本身的。無限的Dalvik指令集使我們不夠能改動程序字節碼,但我們可以用利捆綁在APK文件中的地本庫。地本代碼和DVM運行在同相的較低水平,如圖2:

????

????

????圖2 地本代碼和DVM在統一級別的操縱

????

? ? ??地本代碼是夠能意任操縱自己程進上下文內存的,因此我們可以通過地本代碼覆蓋已加載Dalvik字節碼。但是classes.dex被映射為只讀。這意味著,如果我們修改該段內存,內核將會殺掉我們的程進,因此在際實改動我們的應用程序的字節碼之前,我們必須從新映射該段內存為可寫。后之,我們就夠能寫我們的新字節碼到我們的應用程序。如果程序調用我們改動過的方法,那么將行執新的字節碼。沒有進一步修改應用程序或DVM的要必。通過這類方法,我們現發“字節碼在運行時不能修改”的假設也不是絕對的。只存眷classes.dex文件的靜態析分工具沒有考慮到這類情況,這樣的工具就必須改良以應答這類情況。可以用使靜態和態動析分的合組來服克這類制限,但這樣的雜復的析分系統是不常見的。

????

????三、示例-Crackme

????

? ? ?為了明說我們后面所論討的一些問題,我們決議建創一個案例研討“challenge”的應用程序“crackme”,它用使意惡軟件用使的混雜技巧行進了處置。您可以用使任何析分技巧和工具,并弄清楚它是如何任務的。找到確準的碼密,輸入到上面的文本框中。點擊按鈕,看查否是得到了確準的案答。這將示顯按鈕上面的文字。

????

? ? ?您可以在這里載下crackme的apk文件的副本:https://github.com/blueboxsecurity/DalvikBytecodeTampering/raw/master/delta.apk

????

? ? ?止停瀏覽,如果你算打接受戰挑。上面是戰挑的案答 -----

? ? ?首先我們開始析分Action類,這是我們的應用程序的Activity的進口,按鈕會發觸verify()方法。在這里,我們第一次取獲TextField中的輸入的文本,并把它轉換成一個String。這個String對象不并是java.lang.String類的一個實例而是我們自己的現實。在構造函數中,我們用使第二種方法轉變字符串。結果將被儲存在私有的域區,和Action類的硬編碼在一塊。如果碼密同相,將被于用示顯在屏幕上的消息的密加。

? ? ?但是String類內所用使的轉變文本方法的方法,或者更確準地說,這類方法的字節碼,將遠永不會被行執。當應用程序啟動后,在Action的靜態類的構造函數中,這個方法的字節碼已被替換掉了。在這里,我們加載地本庫'libnet.so'和行執READMEM()函數。在這個庫中,我們取獲一個指針從堆棧到我們的映射的dex文件,并實驗找到文件的頭開。這可以很易容地通過正向搜索內存頁,直到我們現發dex文件的magic byte。在現我們可以從dex文件的頭開析解頭文件。當我們析解dex文件時,我們可以找到的我們要改動方法的址地。但正如后面提到的,我們首先要從新映射內存為可寫。這可以用使mprotect()函數現實。后之,我們就夠能覆蓋本來的字節碼,并通過從本機代碼到類的初始化的返返來成完。類初始化已結束,Activity在Android設備上彈出。在現,當我們按下按鈕時,我們行執的是新的字節碼,而不是本來dex的字節碼。

????

????英文源址:http://blog.bluebox.com/2013/03/25/android-security-analysis-challenge-tampering-dalvik-bytecode-during-runtime/

文章結束給大家分享下程序員的一些笑話語錄: 面試官:熟悉哪種語言
應聘者:JAVA
面試官:知道什么叫類么
應聘者:我這人實在,工作努力,不知道什么叫累
面試官:知道什么是包?
應聘者:我這人實在 平常不帶包 也不用公司準備了
面試官:知道什么是接口嗎?
應聘者:我這個人工作認真。從來不找借口偷懶
面試官:知道什么是繼承么
應聘者:我是孤兒沒什么可以繼承的
面試官:知道什么叫對象么?
應聘者:知道,不過我工作努力,上進心強,暫時還沒有打算找對象。
面試官:知道多態么?
應聘者:知道,我很保守的。我認為讓心愛的女人為了自已一時的快樂去墮胎是不道德的行為!請問這和C#有什么關系??

轉載于:https://www.cnblogs.com/xinyuyuanm/archive/2013/04/24/3041164.html

總結

以上是生活随笔為你收集整理的应用程序文件Android安全分析挑战:运行时篡改Dalvik字节码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。