阿里系產品Xposed Hook檢測機制原理分析
導語:
在逆向分析android App過程中,我們時常用的用的Java層hook框架就是Xposed Hook框架了。一些應用程式廠商為了保護自家android App不被Xposed Hook框架給hook。於是想盡各種方法檢測自己產品是否被Xposed Hook給Hook。筆者最近逆向分析阿里系的產品,發現阿里系的產品能夠檢測自否給Xposed Hook了。本文就帶領給位一起看看官阿里系產品是如何做的這一點的,本文就選擇阿里的支付寶作為我們分析物件。
檢測現象:
- 編寫一個簡單的支付寶的Xposed hook 模組, 模組程式碼如下:
2.安裝XPosed hook mo模組,重啟裝置,開啟支付寶,就會看到如下一個對話方塊:非法操作的,你的手機不安全。這說明支付寶檢測自己被Hook了。
分析過程:
0.分析工具和分析物件
樣本:Alipay_wap_main_10.0.18
工具:AndroidKiller, JEB2.2.7
原始碼:XPosed 框架原始碼
- 為了快速找到程式碼Xposed的檢測程式碼位置,我們就不從對話方塊作為分析入口啦,我們直接使用androidKiller開啟檔案Alipay_wap_main_10.0.18.apk, 然後在工程中搜索xposed相關的關鍵字,例如:xposed
根據搜尋結果,我們找到看了兩個security相關的類。我們使用JEB工具對這兩個類進行分析,我們暫且分析CheckInject類。
我們看到這裡獲得通過反射獲得一個類de.robv.android.xposed.XposedHelpers 的一個物件,於是我們可以確認發現程式碼就這裡。
- 由於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技術分享,掃碼關注微信公眾號
-
——只要你學會了之前所不會的東西,只要今天的你強過了昨天的你,那你就一直是在進階的路上了。