xposed模組開發步驟總結
一、成為xposed模組
要成功xposed模組,被xposed識別,一般需要在清單檔案中標識該三個元資料(meta-data)
<application
android:name=".base.BaseApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name">
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="模組描述文字"/>
<meta-data
android:name="xposedminversion"
android:value="30"/>
</application>
二、引用xposed框架的jar包(XposedBridgeApi.jar)
把下載下來的XposedBridgeApi.jar放到libs目錄下,eclipse的話需要單擊右鍵,選擇Build Path => Add to Build Path ;android studio的話需要單擊右鍵,選擇Add As Library…。
①國外下載地址:http://forum.xda-developers.com/xposed/xposed-api-changelog-developer-news-t2714067
②國內下載地址:http://download.csdn.net/detail/csdn_lqr/9607044
三、進入其他應用的程序
建立一個類,繼承IXposedHookLoadPackage類,覆寫handleLoadPackage方法,xposed的該方法在任何應用啟動時都會被呼叫,故可以進入任何應用程式的程序,但是一般只針對某個特定的應用,例如,只要進入qq的程序:
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XposedBridge;
public class XposedInit implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
if (!loadPackageParam.packageName.contains("com.tencent.mobileqq"))
return;
XposedBridge.log("Loaded app: " + loadPackageParam.packageName);
}
}
XposedBridge.log根Log差不多,Log列印的語句會出現在控制檯,而XposedBridge.log的列印會輸出到xposed框架的啟動程式的日誌功能中,要除錯的話就要到xposed的日誌下檢視log輸出。
四、攔截某個方法
1、攔截com.tencent.mobileqq.app.message.QQMessageFacade類中的a方法,該方法有2個引數,型別分別是ArrayList、boolean。一般攔截用到的回撥物件是XC_MethodHook。
findAndHookMethod("com.tencent.mobileqq.app.message.QQMessageFacade", loadPackageParam.classLoader, "a", ArrayList.class, boolean.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
try {
// 在原先方法執行之後要執行的邏輯程式碼
} catch (Throwable t) {
XposedBridge.log(t);
}
}
});
方法的攔截分執行前攔截(beforeHookedMethod)和執行後攔截(afterHookedMethod),顧名思義,一個是在方法執行前先執行我們自己的程式碼,一個是在方法執行後再執行我們自己的程式碼。
2、如果你根本不行讓原來的方法執行,那可以直接對方法的執行邏輯進行替換,回撥時使用XC_MethodReplacement物件進行處理即可。
findAndHookMethod("com.tencent.mobileqq.app.message.QQMessageFacade", loadPackageParam.classLoader, "a", ArrayList.class, boolean.class, new XC_MethodReplacement() {
@Override
protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {
try {
// 直接替換原來要執行的邏輯程式碼
} catch (Throwable t) {
XposedBridge.log(t);
}
}
});
對於回撥過來的引數MethodHookParam param一般有以下2種用處:
param.args[0]:得到被攔截方法的第一個引數,返回值是Object
param.getResult():得到被攔截方法的執行結果,返回值是Object
五、指定模組的入口
一個模組可以有多個繼承IXposedHookLoadPackage的子類,所以要指定一個入口讓xposed去執行(指定兩個似乎也是可行的,未測試)。指定一個入口的步驟:
1、在assets目錄下新建一個名為xposed_init的檔案。
2、在xposed_init中寫入某個IXposedHookLoadPackage子類的完整類名,如:com.lqr.test.XposedInit。
六、執行
寫完程式碼之後,就要把模組執行看看效果了,把應用部署到手機後,必須要在xposed框架的“模組”功能中勾選該應用,之後需要重啟手機才可生效。
如果使用AndroidStudio的,要注意一下,如果遇到一些不可解釋的情況,可以先build出app後(Build-->Build APK),發給手機安裝,重灌勾選和重啟後再試試看。
相關推薦
xposed模組開發步驟總結
一、成為xposed模組 要成功xposed模組,被xposed識別,一般需要在清單檔案中標識該三個元資料(meta-data) <application android:name=".base.BaseApplication"
Xposed模組開發教程整理
Xposed模組開發教程 Xposed官網 Xposed官方文件 Xposed框架介紹 瞭解和使用Android神器Xposed框架 Xposed模組開發 Xposed模組開發入門 在手機狀態列增加顯示cpu溫度 Xposed模組編寫
Xposed模組開發學習記錄
Xposed模組相關API可以參考線上文件: https://api.xposed.info/reference/packages.html 入門教程可以參考: https://github.com/rovo89/XposedBridge/wiki/Using-the-Xpo
【Xposed模組開發】用Android Studio開發第一個Xposed模組
最近打算學習Xposed模組的開發。Xposed框架是一款可以在不修改APK的情況下影響程式執行(修改系統)的框架服務,通過替換/system/bin/app_process程式控制zygote程序,使得app_process在啟動過程中會載入XposedBridge.jar
反編譯與xposed模組開發
需求描述:008神器生成的資料中,手機型號資料老舊並且android版本低於4.4無法滿足現有需求,需要更新手機型號資料並且擴充套件到更高的android版本。思路一:反編譯008神器並重新打包使用androidKiller反編譯008.apk,點選開啟連結思路二.實現一個修
Xposed模組開發入門教程
前言:在高手如雲的XDA論壇上Xposed框架都被許多開發者譽為“安卓第一神器”。究竟是什麼神奇的能力讓它在眾多APP中脫引而出呢?本文將指引大家完成一個Xposed上最簡單的Demo,讓大家感受一下Xposed的能力。 一、手機環境 1.ROOT過的
Xposed模組開發教程(一) 瞭解並使用Xposed
1.前言: 前幾年 由XDA大神們開發的Xposed模組誕生,並開始逐漸佔據整個玩機市場,出現大量基於Xposed開發的模組 這個玩意可以堪稱 目前Android歷史上最強大的神級軟體, 我
Xposed模組開發
剛安卓逆向入門,認識到java hook的實用性後決定動手開發xp模組,不詳細介紹原理,大概百度一下會更有收穫,雖然關於模組開發的文章也不少,但是在自己動手開發時仍遇到一些問題,事無鉅細,決定寫一篇部落格記錄下來。 今天Xposed安卓7版本正式釋出,機友們有福了。 開發
23、【支付模組開發】——Java對接支付寶步驟(沙箱環境)
####1、下載匯入專案 https://docs.open.alipay.com/54/104506 開啟支付寶介面官網: 我們下載Java版Demo 下載之後解壓,然後我們用IDEA匯入這個Demo專案~ 然後,我們下載一個我們後面需要生成生成RSA金鑰的工具:https://d
嵌入式核心及驅動開發之學習筆記(五) 編寫字元驅動步驟總結
1,實現模組載入和解除安裝入口函式 module_init(chr_dev_init); module_exit(chr_dev_exit);
Struts2學習總結(1)--基本原理,開發步驟,配置詳解
本文包括以下三個部分: 模擬Struts2框架,瞭解基本原理。Struts2的開發步驟。Struts2的配置詳解一、模擬Struts2框架,瞭解基本原理 在學習Struts2框架以前,我們一直採用servlet進行網站的開發。最開始是一個功能使用一個serv
Nginx 模組自主開發八: 總結 Nginx框架的流程
Nginx主框架的流程 當啟動Nginx程式時候,Nginx從入口函式Main()開始執行,檢查命令列引數和環境變數,初始化ngx_modules陣列,然後進入初始化函式ngx_init_cy
Xposed筆記(二)模組開發初試
【1】 目標程式:獨立的實時語音小程式 目標工程及目標類: AndroidManifest.xml檔案資訊: lpparam.packageName輸出: 問題:找不到目標類所在包 【2】 目標方法: android.media.AudioRecord類的re
Drupal 8 模組開發 及頁面無法顯示原因總結
自己建一個開發模組,Drupal試手 建立 具體教程網上都有,比較官方的是這兩個。 下面那個英文的,是官方的開發文件,中文的是對它的翻譯。 開發模組的時候,應該使用三個檔案,如下表藍色檔名。hello_world是建立的模組名,也是模組
Python flask模組介面開發學習總結
引言 Flask 是一個簡單且十分強大的Python web 框架。它被稱為微框架,“微”並不是意味著把整個Web應用放入到一個Python檔案,微框架中的“微”是指Flask旨在保持程式碼簡潔且易於擴充套件,Flask框架的主要特徵是核心構成比較簡單,但具有很強的擴充套件性和相容性,程式設計師可以使用Pyt
java_web項目開發經驗總結(一)
從數據 簡單 處理 開發 事務 傳輸 記錄 承載 基礎上 web項目就像一個動態的記事本,功能很強大,你最初的項目功能調研越給力,項目所能發揮的作用也就越給力。這是因為web網絡的強聯系性,大家都可以通過訪問到自己想要訪問的頁面,頁面裏既可以承載信息,也可以承載做事情的
最詳細的 Android Toolbar 開發實踐總結(轉)
activity resource listener nba flat xmlns mat https ons 轉自:http://www.codeceo.com/article/android-toolbar-develop.html 過年前發了一篇介紹 Transluc
多年iOS開發經驗總結
pla tostring 技術 draw zed 權限 provide cst gre 1、禁止手機睡眠 [UIApplication sharedApplication].idleTimerDisabled = YES; 2、隱藏某行cell - (CG
創建一個簡單項目的開發步驟
ges 技術 nbsp .cn 簡單 一個 技術分享 mage logs 創建一個簡單項目的開發步驟
iOS開發經驗總結
圓形 service selector prot 區域 location dsi layout tty 1、設置UILabel行間距 NSMutableAttributedString* attrString = [[NSMutableAttributedString