前言
數(shù)據(jù)加密或者是業(yè)務(wù)加簽是我們?cè)谶M(jìn)行數(shù)據(jù)包重放或者是修改數(shù)據(jù)時(shí),不得不遇到的痛點(diǎn)。總體來說對(duì)于數(shù)據(jù)解密或者業(yè)務(wù)加簽破解的難度是:app>web>wxapp。因?yàn)閍pi接口都是相同的,因此為了降低挖洞難度,我們可以將目光放到微信小程序上。
抓包
抓包這一塊就簡略的講一下,因?yàn)橹饕獌?nèi)容還是代碼審計(jì)上。目前微信在PC上也是可以使用小程序的,所以小程序的數(shù)據(jù)包獲取上有兩種方式,一種還是常規(guī)的手機(jī)抓包,掛vpn進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。高版本系統(tǒng)不要忘記證書問題。對(duì)于PC上的抓包反編譯小程序源碼 本地?cái)?shù)據(jù)庫反編譯小程序源碼 本地?cái)?shù)據(jù)庫,在座的師傅們都比我懂,我就不多說了。
源碼提取
本次重點(diǎn)介紹端小程序的源碼提取,對(duì)于PC上的小程序由于還加了一層加密(當(dāng)然也有解密腳本),我就不多此一舉了。首先需要一臺(tái)root過的手機(jī)或者是模擬器。打開微信。文件夾cd到 /data/data/com..mm//{一串16進(jìn)制字符}//pkg
然后把已經(jīng)存在的都rm -rf。 此時(shí)再打開咱們的目標(biāo)小程序,此處注意,一定要等小程序完全打開并且再點(diǎn)幾個(gè)功能,確保將所有包都運(yùn)行,因?yàn)槟壳暗男〕绦蝮w量逐漸變大,會(huì)有多個(gè)子包的存在。
此時(shí)將咱們的目標(biāo)小程序包pull出來。利用命令adb pull
然后上工具,。進(jìn)行解包。
建議還是在linux系統(tǒng)下進(jìn)行操作。下因?yàn)橄旅?guī)范問題,因此在環(huán)境下反編譯會(huì)出現(xiàn)文件夾丟失情況,沒法導(dǎo)入分析工具。下圖就是兩種不同的結(jié)果。
導(dǎo)出完成就是這樣的,可以導(dǎo)入微信開發(fā)者工具進(jìn)行靜態(tài)調(diào)試或者是動(dòng)態(tài)調(diào)試了。
靜態(tài)分析 首先看一下我們要分析什么。
由于數(shù)據(jù)經(jīng)過了加密,并且我采用原始手機(jī)號(hào)代替該數(shù)據(jù)也是無法進(jìn)行發(fā)包,因此就需要了解此處的加密方式,并且進(jìn)行還原。 此時(shí)打開微信開發(fā)者工具,將代碼導(dǎo)入。
此處使用測(cè)試號(hào)即可。進(jìn)入之后點(diǎn)擊編譯。
我們?cè)谒阉骺蛑兴阉麝P(guān)鍵詞,可以搜索api,主要的字段都可以。
找到調(diào)用函數(shù)處,發(fā)現(xiàn)數(shù)據(jù)加密函數(shù)為i.。查看該i函數(shù)。
又是引用了532e模塊。跟進(jìn)去。
可以了,此時(shí)無聲勝有聲。 AES的特征都已經(jīng)顯露出來了,所需要的必要參數(shù)也是都已經(jīng)給出,此時(shí)去驗(yàn)證一下。
驗(yàn)證成功。
總結(jié) 特別感謝303師傅和二哥
該貼來源火線zone社區(qū):/d/485