1、前言
在收發消息的接口中,圖片和文件這類接口是相對容易自動下載,但是視頻的下載是需要手動點擊的,并且只有這一種下載方式,實現自動化也比較困難,一些項目的開發中,需要自動下載收到的視頻并保存,這期我們就著重解決這個問題
2、分析
<?xml version="1.0"?>
<msg>
<videomsg aeskey="" cdnvideourl="" cdnthumburl="" length="565725" playlength="3" cdnthumblength="29225" cdnthumbwidth="720" cdnthumbheight="1280" fromusername="" md5="" newmd5="" isplaceholder="0" rawmd5="" rawlength="0" cdnrawvideourl="" cdnrawvideoaeskey="" overwritenewmsgid="0" originsourcemd5="" isad="0" />
</msg>
上述代碼是我們收到視頻消息文字內容的數據,其中包含了視頻的長度、寬度和高度,并使用aes加密方法加密了cdnvideourl字段的內容,可以看到其aeskey字段為其中的解密密碼,但是這里我們并不需要繼續深入研究加密,這些字段的內容已經足夠使用了
3、匯編
使用匯編手段,下斷調試,我們可以鎖定到具體點擊視頻后,執行下載代碼的call是哪一個
如圖
接下來就是要分析這個call,他的寄存器以及push推了哪些數據進堆棧
我們會發現有一個重要的地址保存著非常復雜并龐大的數據結構
如圖
其中部分內容與我們收到的字段內容一致,可以確定這個數據結構在下載視頻中起到關鍵作用
所以我們必須要分析并組裝相同的數據結構來調用call才行實現自動下載視頻
4、調用
分析和組裝數據結構是一個耐心的工作,組裝完成后就可以調用測試了
具體視頻文件保存在默認保存路徑的\FileStorage\Video下
接口運行中會出現后綴名為.mp4.wxtmp的臨時文件,用來保存視頻下載過程中的數據,此時我們只需要等待幾秒,下載完成后,即會出現完整的視頻文件
5、結語
本次我們簡單介紹了HOOK視頻接口,從手動帶自動的過程,其中難點在于數據結構體的分析和組裝,完成組裝后,接口自然就可以順利運行。
有本接口或其他接口學習交流的需求,可以點擊我的頭像查看簡介。