Xposed框架开发入门(一)

最近在学习Android逆向的时候涉及到了Hook方面的知识,所以研究了下Xposed和Cydiasubstrate框架,虽然最后还是成功搞起了,但是一路下来感觉还是有很多不顺的,所以在学习的时候就把学习笔记顺手写下来了。

关于这篇Xposed开发入门,准备分三章来写。第一章主要是关于Xposed框架的介绍和原理,第二章是Xposed框架的基础应用,第三章准备结合最近在做的一个某狗输入法的用户词库的提取来介绍下Xposed框架在具体应用时的用法(关于某狗输入法用户个人词库的提取会在以后的章节中介绍)。

OK,话不多说,搞起!

一、什么是Hook技术

Hook英文翻译是“钩子”的意思,“钩子”顾名思义就是可以勾起东西的工具,那么程序中这个“钩子”又是怎么用的呢?在Android操作系统中系统维护着自己的一套事件分发机制。应用程序,包括应用触发事件和后台逻辑处理,也是根据事件流程一步步地向下执行。而“钩子”的意思,就是在事件传送到终点前截获并监控事件的传输,像个钩子钩上事件一样,并且能够在钩上事件时,处理一些自己特定的事件。较为形象的流程如图所示。

Hook的这个本领,使它能够将自身的代码“融入”被勾住(Hook)的程序的进程中,成为目标进程的一个部分。我们也知道,在Android系统中使用了沙箱机制,普通用户程序的进程空间都是独立的,程序的运行彼此间都不受干扰。这就使我们希望通过一个程序改变其他程序的某些行为的想法不能直接实现,但是Hook的出现给我们开拓了解决此类问题的道路。当然,根据Hook对象与Hook后处理的事件方式不同,Hook还分为不同的种类,如消息Hook、API Hook等。
(引用自动态注入技术 ,关于Hook更详细的介绍也可以参考这篇文章,写的非常详细)

Xposed框架开发入门(一)_第1张图片

二、Xposed框架介绍

在日常工作学习中,我们希望使用Hook技术来完成某功能其实是相当烦琐的,我们很难手动地自己编写一个Hook工具,大多数情况下都是使用第三方提供的框架来做演示。常用的Hook框架有Xposed、CydiaSubstrate和ADBI/DDI,它们各自都有自己的特点,这里我们专门选择Xposed框架来进行介绍。

1、Xposed框架原理

Xposed框架是由rovo89开发的一款针对Android平台的动态劫持项目,是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,通过替换/system/bin/app_process 程序控制 zygote 进程,从而使 app_process 在启动过程中加载XposedBridge.jar 这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。

Zygote进程在启动过程中,除了创建一个Dalvik虚拟机实例之外,还会将Java运行时库加载到进程中来,同时还会注册一些Android核心类的JNI方法到前面创建的Dalvik虚拟机实例中去。

一个应用程序被孵化出来的时候,其不仅会获得Zygote进程中的Dalvik虚拟机实例,还会与Zygote一起共享Java运行时库,这也是可以将XposedBridge.jar这个jar包加载到每一个Android应用中的原因。
XposedBridge有一个私有的Native方法:hookMethodNative,这个方法也在app_process中使用。该函数提供一个方法对象利用Java的反射机制来对内置的方法覆写。

2、Xposed框架的使用步骤

Xposed框架是基于一个Android的本地服务应用XposedInstaller与一个提供API的jar文件来完成的。所以,安装使用Xposed框架我们需要完成以下几个步骤。

1)安装Xposed的本地服务

在这里要安装Xposed的XposedInstall.apk本地应用,这个apk文件在各大应用市场都可以找到,推荐使用豌豆荚来安装,因为在豌豆荚中可以下到他的历史版本,许多手机由于适配或Android版本等一系列问题导致最新的apk安装后无法使用,会出现一堆蛋疼的问题,所以要么换手机要么可以试试虚拟机。

这里我使用的是红米1s+Android4.4.2+XposedInstall.apk(v2.7)+XposedBridge.jar-54来测试。

安装成功后画面如下:
Xposed框架开发入门(一)_第2张图片

点击框架,进入后点击“安装/更新”来安装Xposed框架(如图所示) ,重启后Xposed本地服务便安装完成了。

Xposed框架开发入门(一)_第3张图片
由于我这里已经安装好了,所以激活那里显示的是我当前XposedBridge.jar的版本54

Xposed框架开发入门(一)_第4张图片

2)从下载现有的Xposed模块使用或者自己编写Xposed模块

下载Xposed模块可以自己在网上找也可以在aok的下载界面里面下载。
在网上下载Xposed模块推荐在Xposed中文站 中下载
在apk的下载界面中下载如图所示:
Xposed框架开发入门(一)_第5张图片
寻找自己想要的模块,下载下来,安装后重启手机便可以愉快的使用了。

自己编写Xposed框架在下一篇文章中会具体介绍

你可能感兴趣的:(android逆向)