Xposed框架簡介
Xposed框架是一款可以在不修改APK的情況下影響程序運行(修改系統)的框架服務,通過替換/system/bin/app_process程序控制zygote進程,使得app_process在啟動過程中會加載XposedBridge.jar這個jar包,從而完成對Zygote進程及其創建的Dalvik虛擬機的劫持。
基於Xposed框架可以制作出許多功能強大的模塊,且在功能不沖突的情況下同時運作。此外,Xposed框架中的每一個庫還可以單獨下載使用,如Per APP Setting(為每個應用設置單獨的dpi或修改權限)、Cydia、XPrivacy(防止隱私泄露)、BootManager(開啟自啟動程序管理應用)對原生Launcher替換圖標等應用或功能均基於此框架。
Xposed框架安裝
本次記錄一下在夜神模擬器中安裝Xposed框架,安裝過程中踩了幾個坑,導致在安裝步驟上就浪費了許多時間,因此着重記錄坑點。
安裝環境如下:
夜神模擬器 6.6.0.5
Android 5.1.1
Xposed.installer(5.11安卓系統)
注意事項:
1.Xposed.installer要與Android版本相互兼容。
2.第一次成功安裝以后提示Xposed框架未激活,此時需要進行第二次安裝並重啟。
針對第二點詳細說明,碰到這個問題時上網搜了下,發現這個問題困擾了許多朋友,也不知道是不是夜神模擬器自身的原因。
初次安裝重啟后模擬器的鍵盤失靈(原因未知),需要再次重啟模擬器,此時提示Xposed框架已安裝但未激活:
此時進行第二次安裝並重啟后,解決未激活問題:
XServer模塊簡介
現如今市面上第三方APP加殼的平台較多,同時也競爭激烈。導致了對APP進行滲透測試的過程中經常遇到通信協議的分析或者各類混淆、加殼。這對滲透測試工作而言,無疑是雪上加霜。如果通過靜態代碼分析,那么大部分精力以及時間會耗在定位關鍵函數上,除此之外,逆向通信協議也通常比較麻煩,尤其本着測試目的而非協議本身。於是,XServer應運而生。
XServer是一個用於對方法進行分析的Xposed插件,它針對的是“方法”接口。由於人類習慣函數式編程,為了可維護性,往往會把各個功能分別封裝進各個類與方法,這成為了程序的弱點。利用注入和反射,可以記錄並攔截方法的調用,也可以在應用自身的運行環境中調用某個具體方法。這就可以對應用的分析起到輔助。另外,XServer還通過HTTP和WebSocket提供遠程動態操作界面,也提供RPC接口供其它工具調用應用內的方法。
XServer模塊使用
XServer安裝過程較為簡單,因此不再贅述,記錄一下XServer模塊的使用。
Xposed框架激活XServer模塊:
XServer模塊中選擇對象:
進行端口轉發:
打開瀏覽器輸入127.0.0.1:8000,如下圖所示,說明XServer啟動成功:
Xposed+XServer實戰演示
1.查找、定位加密函數
測試的APP對傳輸的數據全部進行了加密,因此需要先找出加解密函數並使用XServer對其hook,其次在調用解密函數對傳輸數據進行解密,這樣便可以實現在不脫殼情況下對加密包進行解密,直接查看其傳輸的明文數據。尋找加解密函數一般使用關鍵字(常見如decode、encoder、decrypt、encrypt、DES、AES等)搜索。
2.嘗試使用DES進行搜索:
3.可以看到哪些類中存在DES函數,此時運行APP,可以看到加解密函數被hook,並打印出堆棧信息:
4.此時在模擬器中設置好代理,APP運行時如果觸發加解密函數便會將數據回彈到bp中:
總結
從bp中可以清楚得看到APP對傳輸數據進行加解密的整個過程。這樣便可以隨意在bp里對數據進行修改,然后再轉發給APP,此過程便實現了在不對APP進行脫殼的情況下對加密包進行解密、修改的功能。
參考鏈接
https://github.com/monkeylord/XServerhttps://blog.csdn.net/nini_boom/article/details/104400619