Xpatch:免Root實現App加載Xposed插件的一種方法

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

  1. 自動破解app簽名
  2. 支持xposed插件直接打包到apk中
  3. 支持xposed插件中so文件的加載

敬請期待…

源碼解析

Xpatch實現原理文檔已發佈到個人技術公衆號Android葵花寶典上。
微信掃一掃關注公衆號即可查閱:

Issues

Xpatch是基於apk二次打包實現的,而且使用到了dex2Jar工具,因此,也存在不少的侷限性。大概有以下幾點:

  1. 對於使用了簽名校驗的應用,使用Xpatch得到的apk可能無法啓動,或者無法獲取到網絡數據,比如優酷,趣頭條等。不過,這種問題並不是致命性問題,既然app啓動時可以加載xposed插件,那我們可以編寫一個hook獲取簽名的方法的xposed插件,從而使校驗簽名能夠順利通過。具體實施細節稍後會在個人微信技術號上公開,歡迎關注:Android葵花寶典
  2. 有些app可能做了app加固,導致dex2Jar工具無法將dex文件解析爲jar包,從而無法生成新的apk。這種問題暫時還無法解決。
  3. hook框架使用的是lody的Whale框架,此框架存在一些不穩定性,對少數方法的hook會導致崩潰,並且在某些機型上hook也會崩潰。
  4. Xposed Hook框架暫時不支持Dalvik虛擬機。
  5. 暫時不支持Xposed插件中的資源Hook。

結尾

歡迎Star, fork or PR.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章