Xpatch概述
Xpatch用來重新簽名打包Apk文件,使重打包後的Apk能加載安裝在系統裏的任意Xposed插件,從而實現免Root Hook任意App。
源碼
https://github.com/WindySha/Xpatch
Xpatch基本原理
Xpatch的原理是對Apk文件進行二次打包,重新簽名,並生成一個新的apk文件。
在Apk二次打包過程中,插入加載Xposed插件的邏輯,這樣,新的Apk文件就可以加載任意Xposed插件,從而實現免Root Hook任意App的Java代碼。
Hook框架底層使用的是Lody的whale,支持的平臺架構有:ARM/THUMB、ARM64,支持的andrid版本大致:Android 5 ~ Android 9
Xpatch工具包下載
點擊我下載最新的Xpatch Jar包
或者進入github Releases頁面下載:releases
使用方法
Xpatch項目最終生成物是一個Jar包,此Jar使用起來非常簡單,只需要一行命令,一個接入xposed hook功能的apk就生成:
$ java -jar XpatchJar包路徑 apk文件路徑
For example:
$ java -jar ../../xpatch.jar ../../wechat.apk
這條命令之後,在原apk文件(wechat.apk)相同的文件夾中,會生成一個名稱爲wechat-xposed-signed.apk
的新apk,這就是重新簽名之後的支持xposed插件的apk。
Note: 由於簽名與原簽名不一致,因此需要先卸載掉系統上已經安裝的原apk,才能安裝這個Xpatch後的apk
可用的Xposed模塊示例
Note:一般來說,只要app可以被Xpatch破解,並且運行時沒有做簽名校驗,與其相關的Xposed模塊都是可用的。
可破解的App示例
- 微信
- 今日頭條
- 騰訊視頻
- 天天快報
- 愛奇藝
- Subway Surf
- …
- 其他App
Todo
- 自動破解app簽名
- 支持xposed插件直接打包到apk中
- 支持xposed插件中so文件的加載
…
敬請期待…
源碼解析
Xpatch實現原理文檔已發佈到個人技術公衆號Android葵花寶典上。
微信掃一掃關注公衆號即可查閱:
Issues
Xpatch是基於apk二次打包實現的,而且使用到了dex2Jar工具,因此,也存在不少的侷限性。大概有以下幾點:
- 對於使用了簽名校驗的應用,使用Xpatch得到的apk可能無法啓動,或者無法獲取到網絡數據,比如優酷,趣頭條等。不過,這種問題並不是致命性問題,既然app啓動時可以加載xposed插件,那我們可以編寫一個hook獲取簽名的方法的xposed插件,從而使校驗簽名能夠順利通過。具體實施細節稍後會在個人微信技術號上公開,歡迎關注:Android葵花寶典。
- 有些app可能做了app加固,導致dex2Jar工具無法將dex文件解析爲jar包,從而無法生成新的apk。這種問題暫時還無法解決。
- hook框架使用的是lody的Whale框架,此框架存在一些不穩定性,對少數方法的hook會導致崩潰,並且在某些機型上hook也會崩潰。
- Xposed Hook框架暫時不支持Dalvik虛擬機。
- 暫時不支持Xposed插件中的資源Hook。
結尾
歡迎Star, fork or PR.