1. 程式人生 > >阿里系產品Xposed Hook檢測機制原理分析

阿里系產品Xposed Hook檢測機制原理分析

導語:

在逆向分析android App過程中,我們時常用的用的Java層hook框架就是Xposed Hook框架了。一些應用程式廠商為了保護自家android App不被Xposed Hook框架給hook。於是想盡各種方法檢測自己產品是否被Xposed Hook給Hook。筆者最近逆向分析阿里系的產品,發現阿里系的產品能夠檢測自否給Xposed Hook了。本文就帶領給位一起看看官阿里系產品是如何做的這一點的,本文就選擇阿里的支付寶作為我們分析物件。

檢測現象:

  1. 編寫一個簡單的支付寶的Xposed hook 模組, 模組程式碼如下:

這裡寫圖片描述

2.安裝XPosed hook mo模組,重啟裝置,開啟支付寶,就會看到如下一個對話方塊:非法操作的,你的手機不安全。這說明支付寶檢測自己被Hook了。

這裡寫圖片描述

分析過程:

0.分析工具和分析物件

樣本:Alipay_wap_main_10.0.18

工具:AndroidKiller, JEB2.2.7

原始碼:XPosed 框架原始碼

  1. 為了快速找到程式碼Xposed的檢測程式碼位置,我們就不從對話方塊作為分析入口啦,我們直接使用androidKiller開啟檔案Alipay_wap_main_10.0.18.apk, 然後在工程中搜索xposed相關的關鍵字,例如:xposed

這裡寫圖片描述

根據搜尋結果,我們找到看了兩個security相關的類。我們使用JEB工具對這兩個類進行分析,我們暫且分析CheckInject類。

這裡寫圖片描述

我們看到這裡獲得通過反射獲得一個類de.robv.android.xposed.XposedHelpers 的一個物件,於是我們可以確認發現程式碼就這裡。

  1. 由於Smali程式碼是經過混淆的程式碼,不便於讀者閱讀,於是筆者將程式碼整理如下:

這裡寫圖片描述

通過反射獲取de.robv.android.xposed.XposedHelpers類的一個物件obXposedHelper,然後呼叫CheckKeywordInFiled 檢測obXposedHelper成員fieldCache,methodCache,constructorCache是否有支付寶包的關鍵字,CheckInject.CheckKeywordInFiled, 這個函式程式碼 。筆者也這個函式整理如下:

這裡寫圖片描述

fieldCache, methodCache,constructorCache然是XposedHelpers的靜態成員,型別是HashMap

分析結論和安全建議:

結論:

1.支付寶的Xposed hook 檢測原理: Xposed Hook 框架將Hook資訊儲存在fieldCache, methodCache,constructorCache 中, 利用java 反射機制獲取這些資訊,檢測Hook資訊中是否含有支付寶App中敏感的方法,欄位,構造方法。

2.支付寶的SO檢測原理: 檢測程序中使用so名中包含關鍵”hack|inject|hook|call” 的資訊。

3.支付寶的Root檢測: 是否含有su程式和ro.secure是否為1

安全建議:

像這些 “de.robv.android.xposed.XposedHelpers”,”fieldCache”,”methodCache”,”constructorCache” 想這些敏感字串資訊可以進行一些簡單加密。防止使用者直接根據關鍵字搜尋找到關鍵函式。

YunSoul技術分享,掃碼關注微信公眾號

    ——只要你學會了之前所不會的東西,只要今天的你強過了昨天的你,那你就一直是在進階的路上了。