据知情人士透漏,迪士尼公司正在评估对Twitter的收购事宜。全球第二大的社交网络平台Twitter,在成立
的
最初几年内迅速爆红,国内的新浪微博也正是模仿的Twitter而建立的。但最近几年Twitter遇到成长乏力,用户流失率高,股价持续低迷等一系列问题,被收购的声音也是不绝于耳。目前对Twitter表示感兴趣的公司还是有不少的,包括微软、迪士尼、Salesforce等巨头。而Twitter目前的CEO杰克·多西正是迪士尼的董事之一,因此外界猜测由迪士尼收购Twitter的概率较高。
本篇来自
chendd
的投稿,分享了如何使用 Xposed框架(尚未明了的朋友看正文即可)。另外友情提示,Xposed框架的原理是修改系统文件,有一定风险,如变砖、无限重启等。需谨慎!
chendd
的博客地址:
http://chendd.com
Xposed
是 Android平台上较为出名的一个开源框架。在这个框架下,我们可以加载很多
插件App
,这些
插件App
可以直接或间接操纵普通应用甚至系统上的东西。
Xposed
原理上是
Hook
Android 系统的核心进程
Zygote
来达到修改程序运行过程和结果。讲到这里,可能有人会问什么是
Hook
?什么是
Zygote
?
-
Hook(钩子)
:钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
-
Zygote(Android进程名)
:Android系统是基于Linux内核的,而在Linux系统中,所有的进程都是
init进程
的子孙进程,也就是说,所有的进程都是直接或者间接地由
init进程fork出来的
。在Android系统中,所有的应用程序进程以及系统服务进程
SystemServer
都是由
Zygote
进程孕育(fork)出来的,这也许就是为什么要取名英文本意为受精卵的
Zygote
原因吧。
由于
Xposed
框架
Hook
了Android的核心进程
Zygote
,而其他应用启动都是从
Zygote
进程
fork
而来,就够达到针对系统上所有的应用程序进程的
Hook
。
官网地址:
http://repo.xposed.info
源码地址:
https://github.com/rovo89
rovo89大神github主页,如图所示:
主页大致可以看出,
xposed
主要由三个项目来组成的:
-
Xposed
:Xposed的C++ 部分,主要是用来替换 /system/bin/app_process,并为XposedBridge 提供 JNI方法。
-
XposedBridge
:Xposed 提供的jar文件,app_process 启动过程中会加载该jar包,其他的 Modules 的开发都是基于 该jar包。
-
XposedInstaller
:Xposed的安装包,提供对基于Xposed框架的Modules的管理。
xposed
目前已逐步支持 ART虚拟机,兼容 android 5.0 以上版本。
在Android 4.0以上Android设备(需root权限,建议直接用模拟器)安装:
XposedInstaller
http://repo.xposed.info/module/de.robv.android.xposed.installer
启动
XposedInstaller
点击 【框架】:
点击 【安装/更新】 并重启,再点击框架看到看到
激活
底下两个都是绿色,代表框架安装成功:
我们可以点击【下载】来查看热门插件进行安装。
安装完插件点击【模块】进行勾选激活。
之后还需重启,插件才能生效。大家可以自己下载几个插件玩玩,本文重点不在这,就不演示了。
这里我们
hook
自己编写的一个小的登录app来获取用户名密码。
界面比较简单,输入用户名密码点击登录弹出用户输入的密码:
界面代码:
1. 在
AndroidManifest.xml
文件中配置:
2. 导入其jar包:
XposedBridgeApi-.jar
http://forum.xda-developers.com/xposed/xposed-api-changelog-developer-news-t2714067
下载完毕后我们需要将
Xposed Library
复制到
lib目录
(
注意是lib目录,不是Android提供的libs目录
),然后将这个jar包添加到
Build PATH
中。
3. 声明主入口路径
需要在
assets文件夹
中新建一个
xposed_init
的文件,并在其中声明主入口类。如这里我们的主入口类为:
com.example.xposedtest.HookUtil
4. 使用 findAndHookMethod 方法 Hook
这是最重要的一步,我们之前所分析的都需要到这一步进行操作。如我们之前所分析的登陆程序,我们需要劫持,就是需要
Hook
其
com.example.logintest.MainActivity
中的
isCorrectInfo
方法。我们使用
Xposed
提供的
findAndHookMethod
直接进行
MethodHook
操作。在其
Hook
回调中使用
XposedBridge.log
方法,将登陆的账号密码信息打印至
Xposed
的日志中。具体操作如下所示:
5. 运行程序,查看效果: