用androidstudio編寫第一個xposed模塊

前提:你的手機裝了xposedinstaller ,已經獲取root權限,否則以下內容不用看了。
參考鏈接:https://blog.csdn.net/mrglaucusss/article/details/50963542

配置準備工作

我的as版本是3.1的。所以基于此版本做操作

  • 新建一個工程包名隨便取。我取了com.notrace

  • MainActivity代碼簡單如下:

              package com.notrace;
        import android.support.v7.app.AppCompatActivity;
      import android.os.Bundle;
      import android.view.View;
      import android.widget.Toast;
    
      public class MainActivity extends AppCompatActivity {
    
      @Override
        protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          findViewById(R.id.buttonPanel).setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
              Toast.makeText(MainActivity.this,hook(),Toast.LENGTH_SHORT).show();
              }
          });
      }
    
      public String hook(){
      return "未被劫持";
      }
    }
    

很簡單,一個button點擊彈出toast,顯示hook函數返回值,我的目標就是修改這個hook的返回值

  • 修改清單文件,在application節(jié)點下添加

                    <meta-data
          android:name="xposedmodule"
          android:value="true" />
      <meta-data
          android:name="xposeddescription"
          android:value="你猜猜" />
      <meta-data
          android:name="xposedminversion"
          android:value="54" />
    

第一個表示是否是xposed模塊
第二個是描述,隨便你寫
第三個是最低的api版本支持

  • 修改app/gradle

            repositories {
          jcenter()
      }
      dependencies {
        compileOnly 'de.robv.android.xposed:api:82'
        compileOnly 'de.robv.android.xposed:api:82:sources'
        implementation 'com.android.support:appcompat-v7:27.1.1'
        implementation 'com.android.support.constraint:constraint-layout:1.1.0'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    
      }
    

注意,上面兩個一定要修改為compileOnly 如果你是低版本的as可以改成provided

代碼
  • 新建HookTest 類:
          package com.notrace;

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

      public class HookTest implements IXposedHookLoadPackage {
          @Override
          public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam)           throws Throwable {


    if(loadPackageParam.packageName.equals("com.notrace")){
        XposedBridge.log("NOTRACE"+loadPackageParam.packageName);

        Class clazz=loadPackageParam.classLoader.loadClass("com.notrace.MainActivity");

        XposedHelpers.findAndHookMethod(clazz, "hook", new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                super.beforeHookedMethod(param);
            }

            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                param.setResult("你已經被劫持了");
            }
        });
    }
}
  }
  • 添加xposed入口,新建assets:
    微信截圖_20180511182235.png

xposed_init內容如下:

      com.notrace.HookTest
  • 至此結束,然后如果你沒有禁用instant run 那么你就得打一個帶簽名的安裝包,然后安裝到手機上,然后再xposed installer模塊中勾選你編寫的module,然后手機重啟生效。
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,907評論 2 45
  • 即便是教學生也是要有底線的,我發(fā)現孩子們也在不斷的試探老師的底線,比如說寫作業(yè)他可以寫一頁但他想試探你跟你討價還價...
    Lesliewang閱讀 223評論 0 0
  • 中學時候,有一年暑假在家,某天媽媽說,今天下午你們兄妹兩個做飯,鍛煉一下,每人兩個菜。其實,哥哥經常下廚,不就想鍛...
    夢小仙雜記閱讀 467評論 0 2
  • 剛學到到生物時,分娩那一節(jié),就在想這個問題,女人一定要生小孩嗎。 我不了解外國怎么樣,但在中國,結婚,緊接著,就是...
    冬令時閱讀 543評論 4 0

友情鏈接更多精彩內容