企业微信 Hook 学习笔记【1】
2020/7/10 23:09:02
本文主要是介绍企业微信 Hook 学习笔记【1】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
最重要事情
【免责声明】: 此系列文章主要关于xposed的相关学习,以下所提及到的所有方式皆为学习,如有他人使用本系列学习文章中所提及的知识点用于其他非法用途,本人不承担由此造成的任何后果!!
**注:**我将会持续更新此系列文章,分享的内容为我后文提到的:kernel相关内容,以及部分wework相关内容
为什么会做这件事?
原因有很多,主要有以下3个原因: 一则: 看过我以前写的文章的朋友应该知道我是做iOS开发的,但由于对某些医疗业务接触的原因便又感兴趣上了Android,当然我也是有Android基础的,在做完全成为一个iOS开发者之前,Android与iOS的开发是并行的; 二则:业务诉求的需要,并且当我们业务刚在年前最后一天上线时就遇上了让人痛心的新冠,在此我们作为医疗公司基于此提供了非常大的助力,这是我码代码这几年以来,从未有过的成就感,故想更加深入的构建整个体系(这个体系也许我后面的文章会有介绍); 三则:使用三方提供的服务非常不稳定、存在诸多bug、签了合同给了钱之后我们成了乙方…成了乞求他们修改的乙方,很尴尬,但这也不能够怪对方,这是由于我们业务过于复杂,其提供的hook设计逻辑、同步逻辑、转发逻辑等等存在缺陷,加之他们还有其他非API对接用户导致短期无法更改
###怎么开始做的? 2020年前两月我们就在对接微信,最初是个人微信,希望能够通过某些方式做到更多的事情,满足更复杂的业务场景,但由于某些限制以及医疗行业需要API对接的特殊性,我们需要更多额外的功能,故联系了11家之多的厂商,并且5家都深度测试过所提供的API,但大部分只提供个人微信功能,仅有两家可提供企业微信,但其中一家需要年后才能够提供,故选择了能够年前就提供的那一家,但就像我上面提到的非常不稳定bug多,他们的重心也不是提供API对接,而是帮助他们的客户构建私域流量。
故在疫情期间我开始了深入一点的针对xposed的学习了解,并h**k企业微信
整个过程从年初一下午开始学习kotlin,由于我是做iOS开发的,并且有开发Android 的基础,故在学习kotlin与hook过程中并没有遇到什么大问题,年初二下午开始码代码,凭借着个人兴趣几乎持续一个月每日工作到深夜2点,然后就有了雏形,到目前实现的功能有将近200个,并且都经过了版本的测试验证
在此我将整个学习的成果分享如下
由于本人在整个项目中使用了WechatSpellbook的部分开源代码,并且遵从作者写给开发者的内容中,提及能够修复bug也是很好,在此过程中我发现了自动版本匹配的几个bug及不足之处, 故我也会将此部分代码开源(请注意是部分而非全部,也请大家不要喷,这里面涉及到工作以及全部分享出去的法律风险问题),将核心基础功能提供给更多的人共同学习,当然如果你觉得对你有帮助,也请给个star,项目地址: XMagicHooker
注意:
此篇文章为初分享,还未来得及分离代码,如果你觉得有兴趣,可以持续关注,我将在后续分离并上传kernel部分的代码,如果你进入到上述github地址未查阅到源代码,那是我还没有分离,还请等待
一些工具及参考文章代码
关于xposed很多知识点网上其实是存在大量的文章及范例的,在此我也列举出个人在开始进入xposed时的一些较好并且帮助到我的一些文章及范例,在此感谢各位走在前面人的分享
可能会使用到的工具
- Win上的Android Killer
- bytecode-viewer
- ApkStudio
- Apktool
- jadx、dex2jar
以上工具你都可以在github或者网络中找到其使用方法,我主要使用的工具还是只有jadx以及dex2jar,基本上能够完全满足所需了
可能会浏览的网站
吾爱 I春秋 看雪等
可能值得参考的范例
- WechatSpellbook我就大量参考了此框架的设计
- 微信巫师WechatMagician
- MDWechat
- 抢红包
- XposedWechatHelper
可能需要阅读的一些文章
- Xposed API文档
- 微信Xposed插件
- 定制Xposed框架
- xposed源码编译与集成
- xposed源码编译--源码及工具概述
- Xposed 免重启
- Xposed模块开发,免重启改进方案,结合了如何查找apk
- Android Hook技术防范漫谈(美团)
- Android安全防护/检查root/检查Xposed/反调试/应用多开/模拟器检测
- 无需 Root 也能使用 Xposed,来和支付宝大牛一起玩黑科技!
一些项目中的介绍
kernel项目基础核心
本次kernel是在WechatSpellBook的基础上改写而来,在此过程中由于需要针对于更加灵活的wework逆向,故在其基础之上但也进行了大量的新增和修改,但其核心基于版本适配、启动、自动查找等还是采用了spellbook的设计理念,在此非常感谢其所开源的代码,基于此,本人也会将在spellbook基础之上修改的代码完全开源,并且还会将涉及到的其他基本核心代码开源,主要涉及到以下方面:
- 缓存(异步缓存):实现了内存及磁盘二级缓存
- 帮助类工具(Classes、Method、Field查找,错误处理,重试策略,APK解析)
- 媒体处理类(Silk编解码、图片压缩处理)
- 网络请求处理(okhttp):缓存拦截、下载进度、上传进度、重试等
- 其他工具类 (shell命令,异步处理):
- 针对wechatspellbook的修改(涉及到更简洁的Method Hook编码方式)
由于上述某些涉及到逻辑处理,我会在后续的文章慢慢讲解
shared部分
这部分是适用于个人微信及企业微信,目前个人精力有限,并且业务未涉及到太多的个人微信相关需求,故暂时仅大部分功能还是企业微信的
- Activity的生命周期hook
- 数据库操作hook
- 文件修改、删除、写hook
wechat部分
目前完成功能暂时不多,在此暂不作过多介绍,可以参考WechatSpellBook
wework企业微信部分
此部分为企业微信相关的hook,涉及多方面,主要包括:
- 好友/联系人/用户相关
在此你可实现针对好友的查询、删除、获取、修改外部客户、内部成员的操作,可以实现自动通过好友添加、获取二维码、部门用户等等的功能
- 会话相关
这里涉及单聊、群聊、群会话监听、获取群列表、会话列表、删除群、退出群、解散群、邀请群成员、设置置顶、设置备注、设置群内昵称、设置群公告等等功能
- 消息相关
此模块主要收发消息,包括但不限于文本、图片、语音、视频、小程序、链接等等的收发,实现自动下载图片、语音、视频、文件等等用于后期的自动转发
当然还有更多的功能不仅限于上述,更多可以查阅我针对企业微信的xposed学习的成果: 可以访问链接查看 可以访问链接查看 可以访问链接查看
以下截图为项目的整体架构
目前历经一段时间已经完成了大部分功能,现有代码量超过2w行,我是从2.8.6版本适配的,到现目前为止支持到3.0.14,同一套代码并没与作修改实现了自适配,但是在3.0.16上发现了消息解析时有点问题,还未进行适配
注意:
此篇文章为初分享,还未来得及分离代码,如果你觉得有兴趣,可以持续关注,我将在后续分离并上传kernel部分的代码,并且会在后续的文章针对每个实现的对于非常见的功能会进行讲解
项目地址: XMagicHooker
感谢关注
如果你在学习的过程中有其他问题,可以直接联系我的微信,添加时请备注:掘金-xposed/企业微信
这篇关于企业微信 Hook 学习笔记【1】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路