android黑科技系列——Android中新型安全防護策略

來源:互聯網
上載者:User

標籤:web   csdn   androi   科技   medium   方式   開發商   hbm   blog   

一、前言

最近有一個同學,發給我一個裝置流量訪問偵查工具,但是奇怪的是,他從GP上下載下來之後安裝就沒有資料了,而在GP上直接安裝就可以。二次打包也會有問題。所以這裡就可以判斷這個app應該是有簽名校正了,當然還有其他的校正邏輯,我們開啟這個app介面如下,沒有任何資料:


 

二、應用分析

下面就來簡單分析這個app,不多說直接使用Jadx工具開啟:


我們在使用的過程中會發現需要授權VPN許可權,所以就斷定這個app利用了系統的VPNService功能開發的,直接在xml中找到入口,然後進入查看配置代碼:


繼續跟蹤查看內部邏輯:


在Worker類中,看到有一些核心的Native方法,開發過VPNService都知道,攔截資料等操作一般都會放到native去做,主要原因是效能會高點。不多說直接使用IDA開啟libwebd.so檔案,直接搜尋NativeInit函數,為什麼搜尋這個函數呢?因為一看這個是初始化操作,而沒有資料的話那些校正判斷只會在這裡,所以直接看這個函數實現:


繼續往下看,他到底做了哪些驗證,這裡主要包括了三處驗證,具體如下:

第一處驗證:驗證安裝渠道是否為GP,這裡利用了系統的getInstallerPackageName方法來做判斷,這個方法在很早的Android版本就有了,但是這個方法有很大使用問題,後面會介紹。因為GP安裝器包名是:com.android.vending,這裡直接判斷如果安裝器不是GP就不進行攔包操作了。


第二處驗證:應用簽名校正,這個已經是最普遍的校正方法了,這裡不多解釋了,直接使用kstools工具進行爆破即可破解簽名校正。


第三處驗證:這個主要驗證xml中的android:debuggable=”true”這個屬性值,我們之前如果想調試這個app的話,一般都會手動反編譯改這個屬性為true的。但是我們現在不需要調試,也沒必要進行修改。這個驗證對於我們來說沒什麼影響。


看到上面的三處驗證,其實對於我們現在掌握的技術來說,都不難,特別是簽名校正,完全可以使用kstools工具來搞定,一鍵化操作,不瞭解kstools工具的同學可以看這篇文章:Android中自動爆破簽名校正工具kstools;這裡同學自己使用工具操作一下即可過了這個驗證。而第三處驗證可以說沒什麼影響,不用管它。主要來看第一處驗證。有的同學說破解也簡單,直接修改CBZ指令即可。但是這個就缺失了一些技巧,我們要的不是結果,而是學習的過程。接下來看看我是怎麼破解這個校正的。又要多介紹一些知識點了。

 

三、破解方案

破解這個安裝渠道大致有兩個方案,一個是利用kstools工具源碼修改一下,攔截getInstallerPackageName方法,然後修改傳回值即可,如下:


直接返回這個包名的的安裝器就是GP的,這樣在打包就可以給多人使用了。這個不多介紹了,感興趣的同學去下載源碼自己操作實踐一下即可:https://github.com/fourbrother/kstools

還有一種超級簡單的方式,直接使用命令 pm install -i[指定安裝器包名] apk檔案,這個命令應該又很少人知道,但是這個簡單的一個命令就可以在這裡很方便的破解,可以指定一個app的安裝器。


我們安裝之後,可以在系統的 /data/system/packages.xml 中查看應用對應的安裝器名稱:


而這裡又說道一個知識,就是系統的這個packages.xml檔案,他就是裝置安裝成功的應用的一些詳細資料,包括使用到的許可權,簽名資訊,安裝渠道,各種標誌等。之前有人問怎麼擷取裝置中的應用安裝渠道來源,其實可以從這個檔案中擷取到。從這裡看到這個應用現在的確是從GP上安裝的了,也說明了上面的那個pm命令的確有效。

這時候我們再看看應用的攔截是否有效果了:


看到了,這裡開始攔截裝置的資料包了,從這裡看這款app的確很有用,對於我們開發來說,也算是一個很好的工具了,破解之後可以珍藏使用了。

對於第一種方式破解是最好的,因為那樣可以給多個人使用,而對於第二種命令指定安裝器的安裝方式,一般小白使用者肯定不知道。對於第一種方式破解只需要修改kstools源碼即可。

 

四、總結

好了到這裡我們就破解成功了,可以愉快的使用這個app了,但是從上面來看瞭解到了新的防護策略就是判斷應用是否來自於指定應用市場。有的同學可能立馬想到了,為了防止二次打包,可以在應用中判斷是否來自於主流的應用市場渠道,如果不是就不走正確的邏輯了,這個也算是一個防護策略了,不過可惜的是這個想法是不可行的,如果可行就有很多app早這麼幹了。原因是因為這個系統方法:getInstallerPackageName,大家可以自己測試這個方法,會發現:如果一個app是系統應用,那麼這個傳回值可能是裝置內建的應用市場。如果一個app是第三方應用,從GP上安裝,這個值一定是com.android.vending;而如果是其他渠道,比如國內的應用程式套件,手機小幫手,豌豆莢等。就有可能是null值,而是用pm這樣的命令,或者系統內建的安裝器安裝的第三方應用也有可能是null值,也就是說:這個系統api返回的應用安裝器名稱極不穩定,完全就是不靠譜的方法,至少在國內沒法使用的。所以幾乎可以忽略這個方法的。但是為何這個app敢這麼幹呢?其實我也很好奇。不過有一點可以說明就是這個app開發商就認定了此app只在GP上發布,其他渠道都不發布,這樣只認定GP上下載的app才算是合法的。比如一個國外使用者,用了華為手機使用非GP渠道下載了這個app,那麼可惜這個人也是不能使用的。我也很好奇這個app的開發商為何要這麼做?反正國內的app應該都不會這麼做的。因為這個方法的傳回值極不穩定。

但是不能說這個方法不靠譜,我們在後面的逆向就要忽略這個防護,後面我們在破解app依然遵從不變法則:全域搜尋signature字串來判斷是否有簽名校正,全域搜尋getInstallerPackageName方法是否有安全渠道驗證。不管是在IDA還是Jadx中搜尋,都是如此。

android黑科技系列——Android中新型安全防護策略

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.