用Xposed框架hook安卓接口
最近在研究抓安卓里的接口返回的数据,看到了这方面的知识,其实用Xposed框架hook安卓接口在网上的帖子挺多的,自己好不容易调通了,整理一下,主要说一些注意事项。
参考贴:
http://blog.csdn.net/zhangmiaoping23/article/details/52315745
步骤a:安装XposedInstall工具
在Android 4.0以上Android设备(需root权限,建议直接用模拟器)安装 XposedInstaller
安装好XposedInstaller后,点击框架,点击安装/更新,然后重启,安装好之后如下:
步骤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之后,一定要重启!不然不会生效,而且没有错误提示。
步骤d:展示效果
我直接抓了Activity的onClick接口
onClick函数
效果
注意事项:
1.建议使用模拟器测试,我这边的真机,XposedInstall都不支持,我也没去试了
2.hook插件里反射的对象,不是xml里的id,而是Activity里的对象
插件里反射要控制的对象:
想要控制的对象:
3.如果插件要控制LoginTest的空间,比如控制EditText,那么空间得是public不能是private,不知道为啥(后来用private也没报错了,看网上说getDeclaredField可以反射private对象,但是不知道之前为什么会失败)
4.hook代码可以直接放进LoginTest的apk里去,亲测有效。
但是讲真,这样用没法做到简单的通过代码抓用户手机上的包,还得琢磨一下