微信機器人的實現有三種:web,app和exe。其中web很多賬號受限登錄不了,而hook app的話需要使用xposed則會封號,所以現在大部分機器人都是基於PC微信。 先實現一下最基本的機器人的功能:接收消息和發送消息。找相關call請看:https://blog.csdn.net/qq_384 ...
微信機器人的實現有三種:web,app和exe。其中web很多賬號受限登錄不了,而hook app的話需要使用xposed則會封號,所以現在大部分機器人都是基於PC微信。
先實現一下最基本的機器人的功能:接收消息和發送消息。找相關call請看:https://blog.csdn.net/qq_38474570/article/details/93339861。
接收消息
最新版(2.8.0.121)hook地址偏移:0x354B32
基本所有類型的消息都會通過這個,比如紅包、轉賬和語音文件等,包括公眾號的推送也可以收到,因為紅包無法在PC微信上查看,只能收到一個紅包的文字消息(比如誰誰誰發了紅包,請到手機上查看),如果是圖片的話可以知道是什麼圖片,其他比如表情和公眾號等都是一些xml的信息也可以解讀出來,就是語音的話我還沒找到對應的call或者相對應的文件。
要實現攔截信息只需要hook這個地址就能截取到所需要的信息。實現成品:https://www.lanzous.com/ianzaha。(dll由C++編寫,exe由aardio編寫)
效果圖:
發送消息
最新版(2.8.0.121)hook地址偏移:0xE3162
發送文本消息的代碼就是上面幾行,實現成品:https://www.lanzous.com/iao0ahg
CSDN無法上傳視頻,效果就不放了。
機器人
上面的兩個成品只是驗證一下方法可行,並不是機器人,它實際上還是人在操作界面來實現發消息。不過既然能使用外部代碼來實現,那麼對接某些人工智障(比如騰訊AI開放平臺的聊天機器人)也是沒問題的。當然,為了其他語言也可以使用,可以開放一個通用的協議來實現,比如tcpsocket,http。RPC是用的最多的,但是我還沒有弄懂它是個啥意思。
實現一些群發和轉發也是相當簡單,對於收發消息的功能這兩個call已經足夠用了。