微信机器人的实现有三种:web,app和exe。其中web不少帐号受限登陆不了,而hook app的话须要使用xposed则会封号,因此如今大部分机器人都是基于PC微信。web
先实现一下最基本的机器人的功能:接收消息和发送消息。找相关call请看:https://blog.csdn.net/qq_38474570/article/details/93339861。微信
最新版(2.8.0.121)hook地址偏移:0x354B32app
基本全部类型的消息都会经过这个,好比红包、转帐和语音文件等,包括公众号的推送也能够收到,由于红包没法在PC微信上查看,只能收到一个红包的文字消息(好比谁谁谁发了红包,请到手机上查看),若是是图片的话能够知道是什么图片,其余好比表情和公众号等都是一些xml的信息也能够解读出来,就是语音的话我还没找到对应的call或者相对应的文件。socket
要实现拦截信息只须要hook这个地址就能截取到所须要的信息。实现成品:https://www.lanzous.com/ianzaha。(dll由C++编写,exe由aardio编写)tcp
效果图:
.net
最新版(2.8.0.121)hook地址偏移:0xE3162
发送文本消息的代码就是上面几行,实现成品:https://www.lanzous.com/iao0ahg视频
CSDN没法上传视频,效果就不放了。xml
上面的两个成品只是验证一下方法可行,并非机器人,它实际上仍是人在操做界面来实现发消息。不过既然能使用外部代码来实现,那么对接某些人工智障(好比腾讯AI开放平台的聊天机器人)也是没问题的。固然,为了其余语言也可使用,能够开放一个通用的协议来实现,好比tcpsocket,http。RPC是用的最多的,可是我尚未弄懂它是个啥意思。blog
实现一些群发和转发也是至关简单,对于收发消息的功能这两个call已经足够用了。图片