利用Xposed框架編寫模塊實現登錄劫持
用到的環境:
- 一台已經root的Android手機
- AndroidStudio
- Xposed框架APK:http://repo.xposed.info/module/de.robv.android.xposed.installer
- Xposed對應API:http://forum.xda-developers.com/xposed/xposed-api-changelog-developer-news-t2714067
Xposed的使用:
- Xposed可以在不修改APK的情況下對應用的運行結果產生影響,是一款比較常用的Android Hook工具。
- 首先安裝Xposed框架對應APK文件到已經root的手機中,安裝完成后打開Xposed如下圖所示:
- 接着點擊“安裝/更新”。注意:安裝Xposed存在手機變磚的風險,如果你不明白什么是變磚,也不知道如何解決此問題,請慎重。
- 這樣Xposed框架就在手機中安裝完成了,但是這僅僅是一個框架,我們需要下載或者自行編寫功能模塊。
編寫測試應用
- 我們要模擬一個登陸劫持,下面給出一個模擬登錄的APP,界面如圖:
- 下面附上測試應用關鍵登陸驗證代碼:
- 測試應用的包名為:'com.example.administrator.logintest'
編寫Hook模塊
- 使用AndroidStudio新建一個Android工程,可以沒有Activity
- 找到AndroidMainfest文件,添加如下幾個標簽:
- 其中xposedminversion是API的最小版本,這里我們使用的版本為54
- 將API導入工程:
- 注意不要放在libs里,新建一個lib文件夾粘貼進去,然后add library
- 修改build.gradle,把compile改為provided:
- 新建一個類,繼承 IXposedHookLoadPackage,Hook的關鍵步驟在此,下面直接上代碼:
- 這里有兩個比較關鍵的方法:handleLoadPackage獲取包加載時候的回調並拿到其對應的classLoader;findAndHookMethod對指定類的方法進行Hook。
編譯並安裝模塊
- Build APK后使用adb install XXXX.apk 命令將模塊APK安裝到手機中:
- 手機上的Xposed框架檢測的模塊安裝:
-
激活模塊,重啟手機:
-
打開模擬登陸應用,進行登錄操作,在Xposed的日志中查看劫持到的信息:
Acknowledge
- 感謝《Android安全技術揭秘與防范》這本書和其作者 周聖韜
- Hook的關鍵在於對目標應用的逆向,找到關鍵方法
- 寫的比較粗略,如果疑問歡迎留言交流