最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

WechatSpellbook学习笔记

IT培训 admin 8浏览 0评论

WechatSpellbook学习笔记

简介

WechatSpellbook 是微信巫师作者在微信巫师的基础提取出来的通用微信 Xposed 插件框架。它提供了友好的的 API,提供自动分析微信内部结构特征的API(忽略微信版本差异),对 hook 微信出现的常见问题都做了优化,总之就是使用它会更容易对微信 hook

上手

实现IXposedHookLoadPackage接口之后,在任意一个应用开启新进程时,Xposed都会唤醒插件、调用handleLoadPackage方法。所以需要使用isImportantWechatProcess来检查这个进程属不属于微信。

“Spellbook插件”是对Spellbook框架中所有监视微信事件并进行处理的类的统称,通过实现Spellbook制定的接口并且在启动时进行注册,这个插件就能够从Spellbook接收到微信事件的回调。插件可以实现的接口有两种风格:EventCenter和HookerProvider

关键概念

入口类
入口函数
Spellbook插件

事件机制

EventCenter机制

Spellbook首要想解决的,就是封装出一套简单好用的接口,让开发者能够轻松地基于事件驱动的模型来开发自己的微信插件,这也就是EventCenter机制的初衷。
EventCenter的接口:

HookerProvider机制

显然,EventCenter对细节的简化和封装意味着灵活性上的牺牲。当然,因为Xposed框架还在,开发者完全可以像平时写Xposed插件一样自己调用findAndHookMethod等方法劫持函数。但是WechatSpellbook与其前身WechatMagician核心的设计风格就是,让每个功能都干净利落地封装成独立的插件类,而不是一团乱糟糟的findAndHookMethod。

因此在Spellbook中,如果一个插件想要单独以Xposed的风格劫持函数的话,建议实现一个名为HookProvider的接口。这个接口里有两个函数: provideStaticHookers 和 provideEventHooker 。 provideEventHooker 是用来写自定义的EventCenter用的(对,EventCenter也是一种特殊的HookerProvider),因此这个函数我们会放到后面讲怎么拓展EventCenter的时候再去讲。

一个插件想使用Xposed的话,其实只需要实现 provideStaticHookers 就可以,我们以WeChatMagician中出现的一段代码为例讲解一下这个设计:

WechatSpellbook学习笔记

简介

WechatSpellbook 是微信巫师作者在微信巫师的基础提取出来的通用微信 Xposed 插件框架。它提供了友好的的 API,提供自动分析微信内部结构特征的API(忽略微信版本差异),对 hook 微信出现的常见问题都做了优化,总之就是使用它会更容易对微信 hook

上手

实现IXposedHookLoadPackage接口之后,在任意一个应用开启新进程时,Xposed都会唤醒插件、调用handleLoadPackage方法。所以需要使用isImportantWechatProcess来检查这个进程属不属于微信。

“Spellbook插件”是对Spellbook框架中所有监视微信事件并进行处理的类的统称,通过实现Spellbook制定的接口并且在启动时进行注册,这个插件就能够从Spellbook接收到微信事件的回调。插件可以实现的接口有两种风格:EventCenter和HookerProvider

关键概念

入口类
入口函数
Spellbook插件

事件机制

EventCenter机制

Spellbook首要想解决的,就是封装出一套简单好用的接口,让开发者能够轻松地基于事件驱动的模型来开发自己的微信插件,这也就是EventCenter机制的初衷。
EventCenter的接口:

HookerProvider机制

显然,EventCenter对细节的简化和封装意味着灵活性上的牺牲。当然,因为Xposed框架还在,开发者完全可以像平时写Xposed插件一样自己调用findAndHookMethod等方法劫持函数。但是WechatSpellbook与其前身WechatMagician核心的设计风格就是,让每个功能都干净利落地封装成独立的插件类,而不是一团乱糟糟的findAndHookMethod。

因此在Spellbook中,如果一个插件想要单独以Xposed的风格劫持函数的话,建议实现一个名为HookProvider的接口。这个接口里有两个函数: provideStaticHookers 和 provideEventHooker 。 provideEventHooker 是用来写自定义的EventCenter用的(对,EventCenter也是一种特殊的HookerProvider),因此这个函数我们会放到后面讲怎么拓展EventCenter的时候再去讲。

一个插件想使用Xposed的话,其实只需要实现 provideStaticHookers 就可以,我们以WeChatMagician中出现的一段代码为例讲解一下这个设计:

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论