前言:最近看了很多的Xposed的入门教程,根据的我的实践,写此教程,希望对新手有所帮助。
1.编写一个被Hook的App.代码
1 packagecom.example.hookdemo;2
3 importandroid.os.Bundle;4 importandroid.support.design.widget.FloatingActionButton;5 importandroid.support.design.widget.Snackbar;6 importandroid.support.v7.app.AppCompatActivity;7 importandroid.support.v7.widget.Toolbar;8 importandroid.view.View;9 importandroid.view.Menu;10 importandroid.view.MenuItem;11 importandroid.widget.TextView;12
13 public class MainActivity extendsAppCompatActivity {14
15 @Override16 protected voidonCreate(Bundle savedInstanceState) {17 super.onCreate(savedInstanceState);18 setContentView(R.layout.activity_main);19 Toolbar toolbar =findViewById(R.id.toolbar);20 setSupportActionBar(toolbar);21
22 final TextView tv =findViewById(R.id.tv_hook);23
24 FloatingActionButton fab =findViewById(R.id.fab);25 fab.setOnClickListener(newView.OnClickListener() {26 @Override27 public voidonClick(View view) {28 tv.setText(sRes());29 }30 });31 }32
33 String sRes() {34 return "你未被劫持";35 }36 }
运行效果如下。
2.配置 xposed 文件
此处我们用的到是XposedAndroid 4.0.3 to Android 4.4 的版本。
1) 安装Xposed 到真机/虚拟机里
adb install E:\APK\xposed4.0-4.4.apk
2)新建一个Android 安卓工程,写Xposed插件。
在AndroidMainfest.xml 文件中增加如下代码
android:name="xposedmodule"
android:value="true" />
android:name="xposeddescription"
android:value="这是一个Xposed模块" />
android:name="xposedminversion"
android:value="54" />
在app/src/build.gradle 文件下添加以下代码, compileOnly 'de.robv.android.xposed:api:82:sources' 可添可不添,其作用是查看文档。
compileOnly 'de.robv.android.xposed:api:82'
compileOnly 'de.robv.android.xposed:api:82:sources'
添加完之后点击一下 sync project with Gradle file(按照Gradle文件同步引用库),作用是把Xposed "de.robv.android.xposed:api:82","de.robv.android.xposed:api:82:sources"用到的jar包同步project中
编写Xposed插件代码,新建一个java类
java类代码:
1 packagecom.example.myapplication;2
3
4 importde.robv.android.xposed.IXposedHookLoadPackage;5 importde.robv.android.xposed.XC_MethodHook;6 importde.robv.android.xposed.XposedBridge;7 importde.robv.android.xposed.XposedHelpers;8 importde.robv.android.xposed.callbacks.XC_LoadPackage;9
10 public class HookDemo implementsIXposedHookLoadPackage {11
12
13 @Override14 public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throwsThrowable {15
16
17 if (lpparam.packageName.equals("com.example.hookdemo"))18 {19 XposedBridge.log(" HOOK Test");20
21 Class clazz=lpparam.classLoader.loadClass("com.example.hookdemo.MainActivity");22
23 XposedHelpers.findAndHookMethod(clazz, "sRes", newXC_MethodHook() {24 @Override25 protected void afterHookedMethod(MethodHookParam param) throwsThrowable {26 super.afterHookedMethod(param);27
28 param.setResult("你已被劫持");29
30 }31 });32
33
34 }35
36 }37 }
在app/src/main 新建Assets Folder
创建xposed_init 文件
xposed_init内容如下:
com.example.myapplication.HookDemo
填写Xposed的入口类的完整类名。
配置到此结束 。
3。安装到真机/虚拟机