Android脫殼聖戰之---脫殼工具drizzbleDumper介紹

一、情景分析

程序猿一般都很孤獨,特別是總是和代碼相伴,比如像我這種窮屌絲,一到週末就閒着沒事刷各種應用,看看想看的,無意中發現一款封面看着挺誘人的神器,下來來看看,迫不及待的點開:

我尼瑪我只是想視頻通話,竟然還要讓老子衝會員,我這暴脾氣可不答應,可是誰叫我們那麼窮呢?只能靠着自己的左手和右手開始搞了?不多解釋,直接上手逆向這個app。

 

二、逆向脫殼分析

這種app找入口就太簡單了。直接使用Jadx打開app,或者使用apktools反編譯apk,不過可惜的是,這種花錢的app內部都做了很強的防護,反編譯是失敗的:

當然這個錯誤是可以修復的,但是不是本文重點。我們接着用Jadx打開app查看:

很可惜,用了360加固了,所以如果想一探究竟只能先脫殼了。那麼問題來了?這裏會手動去脫殼嗎?說句實話我沒這個精力了,動態調試脫殼很費腦的。所以就另闢捷徑。發現了脫殼神器drizzleDumper工具,這個工具是開源的,大家想看源碼可以去下載:https://github.com/DrizzleRisk/drizzleDumper;當然這個工具網上有人已經分析了原理,這裏就大致在說一下,他的原理就是一點:root設備之後,通過ptrace附加需要脫殼的apk進程,然後在脫殼的apk進程的內存中進行dex文件的特徵搜索,當搜索到dex文件時,進行dex文件的內存dump

其實這個思路和之前介紹的ZjDroid,DexExtractor等工具原理還不太一樣,之前的脫殼工具都是基於hook攔截系統的加載dex函數進行dump出dex的。但是這個工具是基於附加目標程序,尋找內存段具備dex文件頭部信息進行dump的操作。這個思路也是非常好的。我們也知道dex的長度是保存在頭部信息中的,所以只要在內存段中找到dex的頭部信息,然後解析長度,有了起始地址和長度,那麼就可以獲取內存中的完整dex文件了。比如這裏我們簡單看一下這個程序運行之後的內存信息:

找到包名之後,直接查看其對應的maps文件即可:

因爲之前也說過,不管之前怎麼加固,最終都是需要自動脫殼加載dex到內存中,那麼這裏就是直接在內存中找到已經脫殼的程序開始進行操作了。下面來簡單分析他的源碼:

脫殼原理是基於root設備的進程附加操作,只有附加到目標進程才能操作他的內存段信息:

當然這裏工具用法非常簡單,直接輸入想要脫殼的應用包名,內部會通過這個包名找到對應的進程id值,然後在克隆出一個id進行附加操作:

在內存中查找dex文件的特殊格式:

這裏通過magic值進行查找即可:

查找比較簡單,通過讀取maps文件獲取內存段開始和結束地址,然後開始操作這段內存地址:

找到了對應的dex頭部信息,就開始dump出內存數據了。我們去github上可以下載已經編譯好的工具,直接拷貝到設備的/data/local/tmp目錄下,記得修改一下運行權限chmod 777 drizzbleDumper。然後直接運行即可:

工具兩個參數:一個是需要脫殼的程序包名,一個是等到超時時間。看到脫殼成功,脫殼之後的dex文件保存到了該目錄下。我們使用adb pull命令在弄到本地即可。

這裏就簡單使用了drizzleDumper工具進行了脫殼,這裏操作的是360的加固,感興趣的同學可以用這個工具去嘗試其他加固廠商的保護殼,不過最好的方式還是手動脫殼,那樣才能更加的提升技術,但是那樣腦細胞也會損失很多。不過有現成的工具能用就用吧。不能用在考慮手動脫。我們這時候在用Jadx打開上面已經脫殼成功的dex文件,之前說到了,使用apktools反編譯apk失敗的。那麼這裏入口想通過字符串來查找:

這裏想通過查找"價值餘額"來進行突破,所以這時候會發現Jadx厲害之處,直接打開原始apk,查看他的編譯之後的資源文件resource.arsc:

看到了吧,也是可以直接找到的,直接用id值進行全局搜索,這裏一定要去脫殼的dex文件中搜,需要在用一個Jadx打開脫殼的dex文件即可

這時候會發現在R.string中定義了,而且會發現這個字段名是沒有被混淆的。然後在全局搜這個字段名:

這樣就找到入口了,直接點擊進入即可:

這裏就很清晰的發現,獲取價值的方法了。繼續點擊進入查看:

那麼這時候就需要hook大法了,直接使用Xposed進行hook這個獲取價值的方法:

直接運行模塊,看打印日誌信息:

在看看能否視頻通話了:

看到了,我們充值了價值,可以視頻到對方到老:

 

本文的目的只有一個就是學習更多的逆向技巧和思路,如果有人利用本文技術去進行非法商業獲取利益帶來的法律責任都是操作者自己承擔,和本文以及作者沒關係,本文涉及到的代碼項目可以去編碼美麗小密圈自取,歡迎加入小密圈一起學習探討技術

 

三、總結

怕文章被和諧,後面的視頻內容不能在展現了,少兒不宜。大家懂得,而且我們的目的不是真的視頻,而是逆向。雖然我們窮但是我們一定要有道德素質,沒事別刷這些app沒什麼意思,多出去走走,會發現還是這些app刷着有意思。本文主要藉助了一個脫殼工具drizzleDumper來進行脫掉360殼。然後繼續後面的逆向操作。感興趣的同學可以使用這個工具去嘗試其他加固廠商的操作。

 

《Android應用安全防護和逆向分析》

點擊立即購買:京東  天貓  

更多內容:點擊這裏

關注微信公衆號,最新技術乾貨實時推送

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章