当Java反射机制遇到了Android Hook

之前就是Hook了单独的方法,这一次我们将通过Java反射结合Xposed来进行Hook。

0x00 前言

1.你能学到的什么?

1.1 反射Hook修改EditTive的内容。

1.2 反射Hook Activity 跳转。

2.说明

有兴趣请看HAI_使用手册

0x01 Hook修改EditTive

之前我们是通过Hook Tive.class拿到Hook的权限,但是这样做有一个很大的缺陷,就是这样会修改到所有的EditTive的内容。所以我们这次决定使用java的反射机制来拿到当前的内容进行修改。

首先我们要准备一个很简单的Demo。

这个Demo的逻辑主要是,通过输入一个密码,正确之后就会跳转一个Activity。

这里写图片描述

1.Hook过滤App

这里写图片描述

2.Hook onCreate 方法

开发过App的应该知道onCreate是Activity的入口处。我们这次将Hook onCreate方法拿到对象。

这里写图片描述

设置className,设置好methodName 就Hook成功了。

3.反射拿到属性

Class clazz=param.thisObject.getClass();

通过param.thisObject.getClass()反射拿到对象。

Field f=clazz.getDeclaredField("et");

通过getDeclaredField方法拿到private修饰的属性。

 f.setAccessible(true);

强制进行访问。

 EditText et= (EditText) f.get(param.thisObject);

我们新建一个EditText对象,然后指向我们反射到的EditText对象。

et.setText("LoveZHUZHU");

设置好et.setText的内容就可以了。

我们来看一下完成的代码。

这里写图片描述

PS:记得不是包名而是类名。图了有一点错误。

这样子就Hook成功了。

0x02 Hook Activity 跳转

还是那个Demo,这次我们要做的就是不需要直接去输入密码,直接跳转到我们的目标Activity。这个就是我们这次Hook的目的。

Hook拿到Activity对象

Activity a= (Activity) param.thisObject;

通过parm.thisObject得到一个返回对象。

 Class clazz=XposedHelpers.findClass("com.example.hanlei.demo4.Main2Activity",loadPackageParam.classLoader);

通过这种方法获得我们需要跳转的对象。

Intent i=new Intent(a,clazz);

使用Intent进行设置。

a.startActivity(i);

最后使用startActivity进行跳转就可以了。

我们来看一下完整的代码

这里写图片描述

以上。

猜你喜欢

转载自blog.csdn.net/qq_36869808/article/details/80526377