前介
更多精彩文章,点这里
现如今最常用的社交工具是什么呢?必然是 微信
,不得不说现在的微信不在简简单单是一个社交程序,它已经和我们生活紧密相关了。
做为一个程序员?最重要的是什么呢?
我认为做为一个程序员最重要的是
但是做为一个程序员没日没夜的敲代码,经常没有时间回复女朋友的微信或者尬聊
。
做为一个资深的程序员,怎么能被这种小挫折打败呢?我们要用程序的去维护我们的 娇妻
因此我要开发一款自动回复女朋友消息的微信插件。
你的 娇妻
再也不能打断你 打游戏
丶 codeing
丶 风流快活
,让你的 娇妻
和机器人聊吧(维护家庭和谐)!
确定目标
- 自动回复高情商话术
- 微信无感知回复,在后台也不能遗漏回复
- 开关设置,能指定自动回复的娇妻(我们的娇妻可不止一个)
- 热修复,兼容多版本微信
- 找到女朋友
方案定制
我个人习惯,再开发之前,先做准备。把思路屡清楚事半功倍。
- 自动回复高情商话术
我的第一想法是先去下载类似 恋爱话术
的 App
,然后逆向其接口,接入我们的程序。
本人下载了将近 10
款这种类型的应用,最终都发现收费很贵,并且话术都不是很全,最后放弃了。
然后找到了 图灵机器人 ,提供完整的聊天机器人 API
,并且话术还是很精湛的,因此果断注册开发中账号。
- 微信无感知回复,后台也不能遗漏回复
这种没有很好的办法,因为要想在后台回复,只能想办法向微信注入我们的代码(也就是说我们的代码要在微信的进程中运行,在专业点就是我们要想办法拿到微信的 ClassLoader
)。
我的方案还是使用 Xposed
框架 + 分身大师
实现免 Root
注入。
如何开发
Xposed
插件,请参看本人文章 参考链接
- 开关设置,能指定自动回复的娇妻(我们的娇妻可不止一个)
逆向分析微信的聊天界面,找一个合适的地方,通过 Xposed
注入一个开关按钮。这个难点是分析微信代码,并且寻找到的 Hook
代码尽量保证版本兼容(我不希望微信版本更新,就要重新发布或安装插件)。
这里补充下,为啥要
Hook
点尽量保证版本兼容呢?其实说白了就是寻找微信没有混淆的点做入口。为啥呢?因为一旦微信版本升级,肯定会再次混淆。若你Hook
点是混淆的,那若微信版本升级,若要兼容新版本必定要从新寻找混淆后新的Hook
点(我们可不得不到微信混淆后的 mapping 文件)。
- 热修复,兼容多版本微信
在第 3
点我讲过,尽量寻找没有混淆的点做 Hook
,但是若死活寻找不到没有混淆的 Hook
点呢?我们只能想办法进行动态修复插件了,让用户无感知使用,我提供的方案是通过 DexClassLoader
去修复 Hook
点代码。
这套技术方案我在曾经在我的项目 微信语音助手 使用过(以停止维护),具体方案看下图。
- 找到女朋友
若有女程序员看到这里
开始敲代码
都准备好啦,接下来我们开始
对接图灵机器人
这个没啥好说的就是去注册账号,查看提供的API文档
搭建 Xposed 项目
首先在项目 build.gradle
加入依赖。
dependencies {
...
compileOnly 'de.robv.android.xposed:api:82'
compileOnly 'de.robv.android.xposed:api:82:sources'
...
}
注意一定要用
</compileOnly
依赖。为啥呢?大家可以自行去看下Xposed
的原理。我这里就叙述这个问题了,不再本文范畴。