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

Xpatch概述

Xpatch用來從新簽名打包Apk文件,使重打包後的Apk能加載安裝在系統裏的任意Xposed插件,從而實現免Root Hook任意App。java

源碼

github.com/WindySha/Xp…git

Xpatch基本原理

Xpatch的原理是對Apk文件進行二次打包,從新簽名,並生成一個新的apk文件。 在Apk二次打包過程當中,插入加載Xposed插件的邏輯,這樣,新的Apk文件就能夠加載任意Xposed插件,從而實現免Root Hook任意App的Java代碼。github

Hook框架底層使用的是Lody的whale,支持的平臺架構有:ARM/THUMB、ARM64,支持的andrid版本大體:Android 5 ~ Android 9bash

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後的apkapp

可用的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.

相關文章
相關標籤/搜索