0x01 前言
安卓APP測試之HOOK大法是基於Frida來實現HOOK,對於部分用戶來說,一方面手機ROOT會帶來一些風險,另一方面雖然願意承擔風險但是手機無法ROOT。這就需要採用另外一種方法--利用Xposed來進行HOOK。安裝VirtualXposed之後,並不需要對手機進行ROOT,也可以來運行Xposed模塊進行HOOK。
VirtualXposed是基於VirtualApp和epic在非ROOT環境下運行Xposed模塊的實現(支持5.0~9.0),就像它的介紹那樣,Use Xposed with a simple APP,without needing to root,unlock the bootloader,or flash a system image.可以運行Xposed,不需要root,也不需要BL解鎖和刷機。
0x02 環境準備
手機還是採用魅族Mx4,關閉ROOT許可權。
下載並安裝VirtualXposed。
下載地址:https://github.com/android-hacker/VirtualXposed/releases
安裝:
adb install VirtualXposed_0.16.1.apk
安裝VirtualXposed之後,然後把手機上的APP安裝到VirtualXposed上。
由於VirtualXposed自帶Xposed,這裡我們只將需要的APP安裝上去即可。
開發Xposed模塊採用的是Android Studio。
新建一個APP項目,添加依賴
provided 'de.robv.android.xposed:api:82'
provided 'de.robv.android.xposed:api:82:sources'
新建一個Main類,並實現IXposedHookLoadPackage介面。
在src/main下新建一個Assets Folder。
並在其中新建一個名稱為xposed_init的檔案,內容是實現HOOK的類,這裡是com.fuping.soulhook.Main。
在AndroidManifest.xml中指定模塊的名稱
環境準備好了,下麵就是模塊的開發和HOOK了。
0x03 利用Xposed進行HOOK
由於上篇文章已經分析過了,這裡就不進行分析了,打開app會提示“SoulApp暫不支持模擬器,請稍後再試~。“我們需要對cn.soulapp.android.utils.j.e()進行HOOK,令其返回為false。
上面模塊的框架已經搭好了,直接寫HOOK程式碼,主要代碼如下:
注意:利用Android Studio進行模塊的編寫時,需要禁用Instant Run(File -> Settings -> Build,Execution,Deployment -> Instant Run)。
然後打包安裝。再利用VirtualXposed將編寫的HOOK模塊添加到VirtualXposed中。
查看安裝的app
然後在VirtualXposed中打開Xposed Installer,在模塊中勾選soulHook。
重啓VirtualXposed。
Xposed模塊每次修改都需要重啓手機,在VirtualXposed中時,只需重啓VirtualXposed即可,而且速度極快。
在VirtualXposed中打開soulapp,並查看Logcat輸出內容。
APP可以正常進入,說明HOOK成功。
剩下的也比較簡單了,例如查看com.gongjiao.rr.tools.f.b參數。
主要程式碼:
運行輸入手機號查看Log資訊:
也是毫無問題可以獲取到參數的內容的。
獲取到參數內容後,根據上篇文章的算灋的分析,就可以自己構造進行加密了。
例如利用Python來實現,可以批量探測用戶是否注册。
0x04 總結
本來Frida和Xposed是作為一篇文章的,但是由於篇幅問題分成了兩篇。這兩篇文章主要通過兩種方式來進行HOOK,主要是為了說明HOOK的好處,沒有說是為了對比哪個好哪個不好的。不過通過測試,如果安裝了VirtualXposed,Xposed應該還是略勝一籌吧。第一點無需ROOT即可運行,第二點是解决了需要重啓手機的麻煩(利用VirtualXposed可以秒重啓),第三點就是攜帶方便了。不過各有各的好處,根據自己的習慣選擇。也可以先用Frida進行HOOK,畢竟測試比較方便,然後最後移植到Xposed上。