Xposed開發(fā)初體驗

盜個圖

本篇文章具體是Xposed開發(fā)筷畦,如何安裝Xposed需自行上網(wǎng)查找败匹,本文同步更新于旺仔的個人博客早像,訪問可能有點慢是钥,多刷新幾次掠归。

Xposed

什么是Xposed呢?

“Xposed是一個適用于Android的框架缅叠。基于這個框架開發(fā)的模塊可以改變系統(tǒng)和app應用的行為虏冻,而不需要修改APK痪署。這是一個很棒的特性,意味著Xposed模塊可以不經(jīng)過任何修改兄旬,安裝在各種不同的ROM上。Xposed模塊可以很容易的開啟和關閉余寥。你只需要激活或者禁用Xposed模塊领铐,然后重啟手機即可∷蜗希”

很好理解绪撵,就是替換了/system/bin/app_process可執(zhí)行文件,在啟動Zygote時加載額外的jar文件(XposedBridge.jar)祝蝠,并執(zhí)行一些初始化操作(執(zhí)行XposedBridge的main方法)音诈,從而完成對Zygote進程及其創(chuàng)建的Dalvik虛擬機的劫持,然后我們就可以在這個Zygote上下文中進行某些hook操作绎狭。

前提

安裝Xposed的前提是手機必須root细溅,所以沒有root手機的,就不用往下看了儡嘶。

開發(fā)Xposed項目

介紹完Xposed喇聊,那么接下來我們來開發(fā)Xposed的項目。

創(chuàng)建AS項目

使用Android Studio創(chuàng)建一個新的項目蹦狂,具體內(nèi)容就不詳細說了誓篱,基本都會創(chuàng)建項目的。

導入Xposed的api庫

要使用Xposed的東西凯楔,就必須導入相對應的api庫窜骄,

導入jar包

首先我們需要下載對應的jar包,然后導入到項目中的Libs文件夾里面摆屯,下載api-82-sources.jar邻遏,api-82.jar

注意這里要將compile改為provided,原因是Xposed里已有該jar包內(nèi)容鸥拧,再次打包進去會沖突党远,所以要改為provided

同時也要將compile fileTree(include: ['*.jar'], dir: 'libs')也改為provided富弦,如果不修改的話沟娱,就會導致handleLoadPackage沒有回調(diào)。

Provided是對所有的build type以及favlors只在編譯時使用腕柜,類似eclipse中的external-libs,只參與編譯济似,不打包到最終apk矫废。

gradle

當然也可以用gradle導入Xposed,同樣將compile改為provided


dependencies {
    provided fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    provided 'de.robv.android.xposed:api:82'
}

聲明Xposed模塊

創(chuàng)建Xposed項目后砰蠢,還需要在AndroidMenafest.xml文件里面聲明Xposed模塊蓖扑,在application里面添加三個meta-data標簽(xposedmodule、xposeddescription台舱、xposedminversion)律杠。

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <meta-data
            android:name="xposedmodule"
            android:value="true"/>
        <meta-data
            android:name="xposeddescription"
            android:value="Hook log test"/>
        <meta-data
            android:name="xposedminversion"
            android:value="53"/>
    </application>

xposedmodule

表示作為Xposed的一個模塊

xposeddescription

表示對本模塊的描述,該描述會顯示在安裝好后的程序名稱下方

xposedminversion

表示jar包的最低版本號

創(chuàng)建hook類

我們新建一個類竞惋,類名隨意柜去,然后實現(xiàn)IXposedHookLoadPackage接口,并且重寫handleLoadPackage方法拆宛,里面就是我們要具體操作的地方嗓奢。

package top.jowanxu.xposedtest;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage;


public class Tutorial implements IXposedHookLoadPackage {

    @Override
    public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        XposedBridge.log("=========Loaded app: " + lpparam.packageName);
    }
}

聲明類的入口

創(chuàng)建完我們hook類之后,我們需要將該類加載到XposedInstaller中浑厚,也就是我們必須聲明該類的位置股耽,需要在xposed_init中聲明。

xposed_init文件

創(chuàng)建assests文件夾

然后在里面新建一個文件钳幅,文件名為xposed_init物蝙,沒有后綴,然后在里面寫入我們剛剛創(chuàng)建的類的完整類名敢艰,

運行

搞完上面的步驟之后茬末,我們直接run起來,程序跑起來之后盖矫,Xposed會提示是否激活

我們可以在Xposed里面看到我們的我們剛剛創(chuàng)建的項目


打勾丽惭,然后重啟

重啟之后然后打開Xposed的日志,點擊保存

然后導出到電腦辈双,搜索一下责掏,就能找到我們自己打印的內(nèi)容了

結(jié)語

通過上面的例子我們可以很容易的通過Xposed來對app進行修改,所以使用Xposed需謹慎湃望,不要亂下載一些有后臺的模塊换衬,指不定那天就把你的帳號密碼給泄露出去了。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末证芭,一起剝皮案震驚了整個濱河市瞳浦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌废士,老刑警劉巖叫潦,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異官硝,居然都是意外死亡矗蕊,警方通過查閱死者的電腦和手機短蜕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來傻咖,“玉大人朋魔,你說我怎么就攤上這事∏洳伲” “怎么了警检?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長害淤。 經(jīng)常有香客問我解滓,道長,這世上最難降的妖魔是什么筝家? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮邻辉,結(jié)果婚禮上溪王,老公的妹妹穿的比我還像新娘。我一直安慰自己值骇,他們只是感情好莹菱,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吱瘩,像睡著了一般道伟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上使碾,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天蜜徽,我揣著相機與錄音,去河邊找鬼票摇。 笑死拘鞋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的矢门。 我是一名探鬼主播盆色,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祟剔!你這毒婦竟也來了隔躲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤物延,失蹤者是張志新(化名)和其女友劉穎宣旱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叛薯,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡响鹃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年驾霜,在試婚紗的時候發(fā)現(xiàn)自己被綠了文留。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刑顺。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡跑筝,死狀恐怖及汉,靈堂內(nèi)的尸體忽然破棺而出佣谐,到底是詐尸還是另有隱情陡鹃,我是刑警寧澤明未,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布钧唐,位于F島的核電站轩触,受9級特大地震影響寞酿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜脱柱,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一伐弹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榨为,春花似錦惨好、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至矩乐,卻和暖如春龄句,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背散罕。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工分歇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人欧漱。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓卿樱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親硫椰。 傳聞我的和親對象是個殘疾皇子繁调,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354