1.开发工具Android studio
2.项目结构如下图所示,libs文件夹放入我们从官网下载的jar库文件,assets文件夹下新建一个xposed_init,注意这个文件没有后缀格式,这个文件后面用于声明模块入口的。然后新建一个HookToast.java文件,这个文件就是我们程序的主要逻辑文件,xposed控制都在这个文件里面写,另外默认的MainActivity.java文件,我们不用去管它,因为xposed可以不需要界面!

3.在app文件夹下build.gradle中将添加图中两句,引入库文件。有人说
provided 'de.robv.android.xposed:api:82:sources'这句不是必要的,确实,它里面存放了javadoc,方便Ctrl+Q快速查阅,反正也是一堆英文看着晕,不写这句也行。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
provided 'de.robv.android.xposed:api:82'
provided 'de.robv.android.xposed:api:82:sources'
}
4.在AndroidManifest.xml将自己标识为一个Xposed模块,语句添加在如下位置
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="潇洒夏夏_这里是模块介绍" />
<meta-data
android:name="xposedminversion"
android:value="53" />
5.HookToast.java这里需要我们自己定义功能的类块,如下代码是修改包名为com.toast这个apk的com.toast.MainActivity类下的这个toastMessage方法的值
// HookToast.java
package com.xposed.wx;
import de.robv.android.xposed.*;
import de.robv.android.xposed.callbacks.*;
public class HookToast implements IXposedHookLoadPackage
{
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable
{
过滤应用包
if (loadPackageParam.packageName.equals("com.toast"))
{
Class clazz = loadPackageParam.classLoader.loadClass("com.toast.MainActivity");
XposedHelpers.findAndHookMethod(clazz, "toastMessage", new XC_MethodHook() {
protected void beforeHookedMethod(MethodHookParam param) throws Throwable
{
XposedBridge.log("别看了,老子已经成功Hook");
super.beforeHookedMethod(param);
}
protected void afterHookedMethod(MethodHookParam param) throws Throwable
{
param.setResult("你已被劫持");
}
});
}
}
}
package com.toast;
import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;
public class MainActivity extends Activity
{
private Button id;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
id = (Button) findViewById(R.id.id);
id.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, toastMessage(), Toast.LENGTH_SHORT).show();
}
});
}
public String toastMessage() {
return "你好";
}
}
6.声明xposed模块入口,之前说过在assets文件夹下新建一个xposed_init文件,文件里面就是写下面这行代码,声明xposed模块入口
com.xposed.wx.xposedhook
7.到这里一个简单的xposed模块就完成了,打包安装后在xposed框架里面的模块列表可以看见,重启一下手机模块就生效了!喜欢这篇文章麻烦给个赞或者捐款支持一下,毕竟手机打字不容易!
网友评论