Xposed 安装

xposed.apk

upload successful

框架

upload successful

初次运行是点击 安装/更新 就行了,后续在激活模块的时候可以点击 软重启 重启手机(模拟器)

模块

upload successful

显示已安装的模块,打勾的说明是已经激活的

下载

upload successful

显示网上已经有的模块,别人开发好的,可以直接拿过来用的那种

设置

upload successful

日志

upload successful

显示模块运行时后的日志信息,可用来显示XposedBridge.log(“”);打印出来的消息

关于

upload successful

第一个模块学习

在build.gradle中添加信息

compileOnly 'de.robv.android.xposed:api:82'
compileOnly 'de.robv.android.xposed:api:82:sources'

upload successful

导入框架需要的依赖

AndroidManifest.xml添加如下信息

upload successful

<meta-data
    android:name="xposedmodule"        该程序是否是xposed的模块
    android:value="true" />
<meta-data
    android:name="xposeddescription"   对本模块的功能的描述,可以自己简单的描述一下可以了
    android:value="Module测试" />
<meta-data
    android:name="xposedminversion"    是本模块开发时用到的Xposed的jar包最低版本号
    android:value="54" />

注意该段代码的放置位置

添加模块的入口函数

upload successful

upload successful

新建一个类,为Xposed模块的主类,新建一个assets目录,在目录下创建一个file xposed_init,里面添上模块入口函数的路径

编写模块的主要代码

package com.example.info;

import android.widget.TextView;

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 {
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        if(lpparam.packageName.equals("com.example.helloworld")){

            XposedHelpers.findAndHookMethod(TextView.class, "setText",CharSequence.class, new XC_MethodHook() {
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    param.args[0] = "isHookedbe";
                }
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    param.args[0] = "isHookedaf";
                }
            });
        }
    }
}

作用是HOOK TextView的setText方法

被Hook的程序的MainActivity

package com.example.helloworld;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private Button b;
    private TextView t;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        b = (Button)findViewById(R.id.button);
        t = (TextView)findViewById(R.id.textView);

        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                t.setText("aaaaaaaaaaaaaaa");
            }
        });
    }
}

在点击程序后本应该会显示aaaaaaaaaaaaaaa,hook之后会显示isHookedbe

看图

upload successful

总结

先Hook成功一个案例,然后实现各种操作吧,可以看看官方的api



android      xposed框架

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!