Xposed hook(android)

來源:互聯網
上載者:User

標籤:replace   hand   term   idg   ffffff   android   eee   ems   sso   

先寫一個測試程式擷取 id

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //控制項        TextView test = findViewById(R.id.test);        Context context = getApplicationContext();        //許可權        //<uses-permission android:name="android.permission.READ_PHONE_STATE" />        if (context.getPackageManager().checkPermission(Manifest.permission.READ_PHONE_STATE,                context.getPackageName()) == PackageManager.PERMISSION_GRANTED)        {            String  Imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).getDeviceId();            Log.e("soho",Imei);            test.setText(Imei);        }        else        {            Log.e("soho","no permission");        }    }}


開始 hook
建立一個項目
在application中增加模組說明

 <meta-data android:name="xposedmodule" android:value="true"></meta-data>        <meta-data android:name="xposeddescription" android:value="Xposed外掛程式"></meta-data>        <meta-data android:name="xposedminversion" android:value="54"></meta-data>/////////////////////////////////////////////////////////////<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.liuhailong.hook">    <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">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <meta-data android:name="xposedmodule" android:value="true"></meta-data>        <meta-data android:name="xposeddescription" android:value="Xposed外掛程式"></meta-data>        <meta-data android:name="xposedminversion" android:value="54"></meta-data>    </application></manifest>

匯入 xposed jar
先在 app 中建立 一個檔案夾同時必須名為 lib(在 project 視圖)

複製模組進去

開啟模組依賴

再添加

修改 scope 為


載入下或者運行一下不行重啟 as
會出現 3 個目錄說明載入成功

建立一個類 名稱必須為Main實現IXposedHookLoadPackage介面

實現方法

聲明主入口類路徑
在 main檔案夾內建立 assets檔案夾必須名為assets
在assets檔案夾內建立一個 xposed_init的檔案名稱也要一樣
在檔案中聲明入口類名稱

使用 findAndHookMethod

    package com.example.liuhailong.hook;import android.telephony.TelephonyManager;import de.robv.android.xposed.IXposedHookLoadPackage;import de.robv.android.xposed.XC_MethodReplacement;import de.robv.android.xposed.XposedBridge;import de.robv.android.xposed.XposedHelpers;import de.robv.android.xposed.callbacks.XC_LoadPackage;public class Main implements IXposedHookLoadPackage {    @Override    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {        //先判斷要 hook的包也就是那個 app        if(!loadPackageParam.packageName.equals("com.example.liuhailong")){            //列印日誌這個列印在 apk上            XposedBridge.log(loadPackageParam.packageName);            return;        }          //打到對應的方法 進行替換 replaceHookedMethod替換方法        //參數1:名稱 參數2:方法名 參數3:實現監聽 重寫方法        XposedHelpers.findAndHookMethod(        TelephonyManager.class,        "getDeviceId",        new XC_MethodReplacement() {            @Override            protected Object replaceHookedMethod(MethodHookParam argMethodHookParam) throws Throwable {                return "我才是序號!";            }        }        );    }}

安裝 hook 架構
de.robv.android.xposed.installer_v32_de4f0d.apk

提示要你安裝 hook

點擊架構

點擊安裝它就會要你重啟
重啟完後啟動 hook

點擊模組

重啟就可以了 只要啟動 hooktest 就會被 hook(hook不要啟動 一般是寫沒有見面的我是為了調試)

Main.java 完整代碼

package com.bluelesson.xposed24;import android.telephony.TelephonyManager;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 Main implements IXposedHookLoadPackage {    @Override    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam argLoadPackageParam) throws Throwable {        // 判斷是不是要Hook的包,不是直接返回        if(!argLoadPackageParam.packageName.equals("com.bluelesson.testphoneinfo")){            return;        }//        XposedHelpers.findAndHookMethod(//                TelephonyManager.class,//                "getDeviceId",//                new XC_MethodReplacement() {//                    @Override//                    protected Object replaceHookedMethod(MethodHookParam argMethodHookParam) throws Throwable {//                        return "我才是序號!";//                    }//                }//        );        XposedHelpers.findAndHookMethod(                TelephonyManager.class,                "getDeviceId",                new XC_MethodHook() {                    @Override                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {                        super.beforeHookedMethod(param);                        XposedBridge.log("beforeHookedMethod");                    }                    @Override                    protected void afterHookedMethod(MethodHookParam param) throws Throwable {                        super.afterHookedMethod(param);                        XposedBridge.log("afterHookedMethod");                        param.setResult("我是序號");                    }                }        );    }}

Xposed hook(android)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.