安卓Hook系列教程(一):xposed模塊開發環境搭建

xposed教程比較多,但是大多都相差無幾,要麼就只是入門級,要麼就是從源碼角度分析xposed的原理。但是針對xposed開發技巧類的卻不多,很難找。 經常有人問我xposed靜態方法,靜態變量如何hook,插件更新後能不能不重啓調試,我決定針對這些寫一系列教程,如果有不正確的地方希望大家指出來改正。
xposed是什麼東西就不介紹了,百度搜索一下就有,太多了。
首先給出幾個地址,相信對你會很有幫助
rovo的github主頁:https://github.com/rovo89
xposed官網:http://repo.xposed.info/
xposed javadoc地址:http://api.xposed.info
官方英文教程:https://github.com/rovo89/XposedBridge/wiki/Development-tutorial
xda論壇的xposed版塊:http://forum.xda-developers.com/xposed
最後XposedBridgeApi地址:https://jcenter.bintray.com/de/robv/android/xposed/api/
當然XposedBridgeApi你也可以前往csdn下載54版的,但是我喜歡嚐鮮,就下載了新版,都可以用,看自己喜好。開始安裝

Eclipse開發:將jar複製到lib或者libs目錄下即可
Android Studio開發:將jar複製到app下的libs目錄中,修改app的build.gradle,添加provided files('libs/api-81.jar')
大致是這樣

dependencies {
    compile 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:24.2.0'
    testCompile 'junit:junit:4.12'
    provided files('libs/api-81.jar')
}

然後如果Android Studio是2.0以上版本需要關閉Instant Run,File>>Setting>>Build….全部取消勾選就行了

這裏寫圖片描述

在AndroidManifest.xml中添加如下代碼:

        <!-- xposed模塊開關,默認true就行 -->
        <meta-data  
            android:name="xposedmodule"  
            android:value="true" />             
        <!-- 提示文字 --> 
        <meta-data  
            android:name="xposeddescription"  
            android:value="Module測試" /> 
        <!-- 最低版本支持 --> 
        <meta-data  
            android:name="xposedminversion"  
            android:value="54" />  

新建一個類,並實現IXposedHookLoadPackage接口,並實現IXposedHookLoadPackage接口中的handleLoadPackage方法

public class HookMain implements IXposedHookLoadPackage {
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable { 
        //這裏測試Hook靜態變量,修改手機機型和廠商       
        XposedHelpers.setStaticObjectField(android.os.Build.class, "MANUFACTURER", "醉貓");//廠商
        XposedHelpers.setStaticObjectField(android.os.Build.class, "MODEL", "bestmk.cn");//機型
    }

}

接下來在assets中創建一個新的文件,命名爲xposed_init,在裏面添加你剛纔創建的類名cn.bestmk.HookMain
運行應用,在xposed框架中勾選你剛纔編寫的模塊,重啓手機,然後手機機型就改變了。
下一篇文章將會更詳細的介紹各種情形的hook方式
如果有問題歡迎發表評論,或者發送到我的郵箱[email protected],有時間我會一一解答

發佈了41 篇原創文章 · 獲贊 115 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章