对Xposed的认识和思考

Xposed是什么

Xposed 是一款可以在不修改 APK 的情况下影响程序运行的框架服务,基于 Xposed 能够制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。
Xposed 通过替换 /system/bin/app_process 程序控制 zygote 进程,使得 app_process 在启动过程中会加载 XposedBridge.jar 这个 jar 包,从而完成对系统应用的劫持。
Xposed 不仅仅是一个插件加载功能,而是它从根上 Hook 了 Android Java虚拟机,所以它需要 root,所以每次为它启用新插件APP 都需要重新启动。

Xposed能做什么?

能够修改微信运动的步数,我修改了微信小号走路的步数,其实只是 hook 了传感器的 api 而已。


hook了传感器API.JPG

能够修改手机当前位置。我们知道手机的定位一般是混合定位,借助wifi、gps、基站等等来获取定位数据,如果能 hook 基站、wifi、gps等api,那么就能实现修改手机的当前位置。


修改手机的定位.JPG

用这个思路,做个 AR 抢红包的外挂也是未尝不可。

能够 hook 住 android 任意 api 的 Xposed 能做的远不止于此,还能够做很多非常有想象力的事情。

Xpose开发遇到的坑

首先,root 是安装 Xposed 的前提。有时,即使 root 了也不行,我遇到过一台三星 s6,已经 root 了仍然无法安装Xposed :(

每调试一次,都需要重启手机,经过一天的调试会有一种手机都快被玩坏的错觉。

最后,曾经被一个配置困扰了一个下午。Xposed 的 jar 包不能使用 compile,而是应该使用provided,就是因为这个配置错了,我一个下午拿不到结果:(

对于开发 Xposed 模块,必须要有足够的耐心。当然,所有的开发都是如此。

对利用Xposed的思考

在移动互联网时代,某些数据可能只存在于app之中,非常封闭。如果 app 有对应的网站,还能通过爬虫抓取内容,如果没有对应的网站,抓取就会有困难。如果 app 跟后端的通信协议是 protobuf、thrift 之类,那抓取数据包都会比较麻烦。

这几天一直在玩 Xposed ,所以我想写一个抓取 app 内容的爬虫,当然首先需要逆向 app 查找到内容所在的地方,才能借助 Xposed 进行hook。

Xposed 也能帮助测试,既然能修改手机的location,那么对地理位置要求高的lbs应用做一些测试就不在话下了,不再需要人工跑过去。

你可能感兴趣的:(对Xposed的认识和思考)