《Android安全技术揭秘与防范》—第8章8.2节常用的Hook工具

本节书摘来自异步社区《Android安全技术揭秘与防范》一书中的第8章8.2节常用的Hook工具,作者周圣韬,更多章节内容可以访问云栖社区“异步社区”公众号查看。

8.2 常用的Hook工具
在日常工作学习中,我们希望使用Hook技术来完成某功能其实是相当烦琐的,但也并不是不可能的。我们这里没有手动地重新书写一个Hook工具,而是使用到了第三方提供的框架来做演示。Android的Hook技术虽然发展不久,但是也出现了很多的Hook框架工具。本节我们就具体介绍一下目前常用到的Hook框架。

8.2.1 Xposed框架
Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,通过替换/system/bin/app_process 程序控制 zygote 进程,使 app_process 在启动过程中加载XposedBridge.jar 这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。基于Xposed框架可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。此外,Xposed框架中的每一个库还可以单独下载使用,如Per App Setting(为每个应用设置单独的dpi或修改权限)、Cydia、XPrivacy(防止隐私泄露)、BootManager(开启自启动程序管理应用),对原生Launcher替换图标等应用或功能均基于此框架。

官网地址:http://repo.xposed.info/

源码地址:https://github.com/rovo89

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

● 安装本地服务XposedInstaller
需要安装XposedInstall.apk本地服务应用,我们能够在其官网的framework栏目中找到,下载并安装。地址为:

http://repo.xposed.info/module/de.robv.android.xposed.installer

安装好后进入XposedInstaller应用程序,会出现需要激活框架的界面,如图8-5所示。这里我们点击“安装/更新”就能完成框架的激活了。部分设备如果不支持直接写入的话,可以选择“安装方式”,修改为在Recovery模式下自动安装即可。


8292252b2aa5fba289b9e572777fca4bea665961


44ea5d596f1de3ebbb2bd502afe920c61ef09494

因为安装时会需要Root权限,安装后会启动Xposed的app_process,所以安装过程中会存在设备多次重新启动。

TIPS
 由于国内的部分ROM对Xposed不兼容,如果安装Xposed不成功的话,强制使用Recovery写入可能会造成设备反复重启而无法正常启动。
● 下载使用API库
其 API 库XposedBridgeApi-.jar(version 是 XposedAPI 的版本号,如我们这里是XposedBridgeApi-54.jar)文件,我们能够在Xposed的官方支持xda论坛找到,其地址为:

http://forum.xda-developers.com/xposed/xposed-api-changelog-developer-news-t2714067

下载完毕后我们需要将 Xposed Library 复制到 lib目录(注意是 lib 目录,不是Android提供的 libs 目录),然后将这个 jar 包添加到 Build PATH 中,效果如图8-6所示。


68a6889679e75cee19dc2b9d764b06c851000c0b

如果直接将jar包放置到了libs目录下,很可能会产生错误“IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation”。估计Xposed作者在其框架内部也引用了BridgeApi,这样操作可以避免重复引用。

8.2.2 CydiaSubstrate框架
如果使用过苹果手机的用户应该对Cydiasubstrate框架一点都不会陌生,因为Cydiasubstrate框架为苹果用户提供了越狱相关的服务框架。Cydiasubstrate原名MobileSubstrate(类库中都是以MS开头的),作者为大名鼎鼎的Jay Freeman(saurik)。当然Cydiasubstrate 也推出了Android版。Cydia Substrate是一个代码修改平台。它可以修改任何主进程的代码,不管是用Java还是C/C++(native代码)编写的。而Xposed只支持HOOK app_process中的 Java 函数,因此 Cydiasubstrate 是一款强大而实用的 HOOK工具。


8008e1a2852c49728f599f512542978e472e92dd

与使用Xposed框架类似,使用Cydiasubstrate框架之前我们需要配置它的使用环境,对于强大的Cydiasubstrate框架使用其实只需要配置两个地方。安装Cydiastrate框架Android本地服务,下载使用Cydiastrate提供的API。

● 安装Cydiastrate框架Android本地服务
一个就是在Android设备中安装Cydiasubstrate框架的本地服务应用substrate.apk,我们可以在其官网下载到。

当然,我们安装substrate后,需要“Link Substrate Files”(连接本地的Substrate服务文件),这一步是需要Root权限的,连接后还需要重启设备才能够生效。Substrate服务设置应用如图8-8所示。


bfcf231cf08c1550f784c1be68b13c8f37d63261

● 下载使用Cydiasubstrate库
Cydiasubstrate官方建议以在Android SDK Manager中添加它们插件地址的方式进行更新下载,如图8-9所示,在用户自定义网址中添加http://asdk.cydiasubstrate.com/addon.xml


df7b729a7a57aa6ed5a7377c83d8bf9867c6a666

通过使用Android SDK Manager工具下载完Cydiasubstrate框架后,其存储于目录${ANDROID_ HOME}sdkextrassaurikitcydia_substrate下。但是,由于Android SDK Manager在国内使用起来存在很多的限制,下载的时候也不是非常稳定,所以还是建议大家直接去官网下载开发库。

官方下载地址为:http://asdk.cydiasubstrate.com/zips/cydia_substrate-r2.zip

下载完成后,将得到的所有文件(很多的jar包与so库),都复制到Android项目下的libs文件夹中,就可以直接使用了。效果如图8-10所示。


6e679ae3e668da2c5e3c3254f629cdb7ba627cad

其中的substrate.h头文件与lib文件夹下的so文件是提供在使用NDK进行原生Hook程序开发中的函数支持库。

TIPS
 CydiaSubstrate框架对于inline Hook的操作目前还存在一些bug,使用的时候可能会出现崩溃的现象,部分使用了国内定制的ROM的设备在使用CydiaSubstrate框架时会出现设备无法重新启动或无法Hook的现象。
8.2.3 ADBI/DDI框架
ADBI(全称为:Android Dynamic Binary Instrumentation Toolkit)即Android的动态二进制指令工具包,兼容Android中的ARM与Thmub指令,提供动态库注入与函数Hook(包括inline Hook)。当然,其也提供了Java层的类似功能,即DDI(Dynamic Dalvik Instrumentation Toolkit)框架。

ADBI/DDI框架与Xposed和CydiaSubstrate框架最大的区别是,它是一个命令行工具,使用起来更加的简单方便。我们可以在Github上找到其源码,地址为:

ADBI:https://github.com/crmulliner/adbi

DDI:https://github.com/crmulliner/ddi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值