用Xposed框架hook安卓接口

最近在研究抓安卓里的接口返回的数据,看到了这方面的知识,其实用Xposed框架hook安卓接口在网上的帖子挺多的,自己好不容易调通了,整理一下,主要说一些注意事项。

参考贴:

http://blog.csdn.net/zhangmiaoping23/article/details/52315745

步骤a:安装XposedInstall工具

在Android 4.0以上Android设备(需root权限,建议直接用模拟器)安装 XposedInstaller

安装好XposedInstaller后,点击框架,点击安装/更新,然后重启,安装好之后如下:

用Xposed框架hook安卓接口
 

步骤b:编写插件

XposedTest:插件工程,详见附件,要写的就几个地方:

1.assets目录下的xposed_init文件

com.example.xposedtest.HookUtil

2.Manifest中的配置

<meta-data android:name="xposedmodule" android:value="true" />

<meta-data android:name="xposeddescription" android:value="登录hook例子!" />

<meta-data android:name="xposedminversion" android:value="54" />

3.HookUtil类里的代码

步骤c:选定插件

切记,选定model之后,一定要重启!不然不会生效,而且没有错误提示。
用Xposed框架hook安卓接口

步骤d:展示效果

我直接抓了Activity的onClick接口

用Xposed框架hook安卓接口
onClick函数
用Xposed框架hook安卓接口
效果
用Xposed框架hook安卓接口
 
 

注意事项:

1.建议使用模拟器测试,我这边的真机,XposedInstall都不支持,我也没去试了

2.hook插件里反射的对象,不是xml里的id,而是Activity里的对象

插件里反射要控制的对象:

用Xposed框架hook安卓接口
 想要控制的对象:

用Xposed框架hook安卓接口
3.如果插件要控制LoginTest的空间,比如控制EditText,那么空间得是public不能是private,不知道为啥(后来用private也没报错了,看网上说getDeclaredField可以反射private对象,但是不知道之前为什么会失败)

4.hook代码可以直接放进LoginTest的apk里去,亲测有效。

 但是讲真,这样用没法做到简单的通过代码抓用户手机上的包,还得琢磨一下

相关推荐