PC微信逆向:分析通用设置数组
文章目錄
- 前言
- 通用設置切入點
- 分析通用設置數據結構
- 分析通用設置數組
- 隨機的數組下標
前言
微信版本2.8.0.121
分析訴求->通過代碼實現關閉微信通用設置里的“有更新時自動升級微信"。
通用設置切入點
這種復選框的設置無非就是一個標志位的問題,分析起來比較簡單,中間肯定會涉及到一些數據結構。作為開發者肯定不會把每一個設置選項都單獨存放,而是放在一個數據結構里方便管理。
首先用CE附加微信
在取消勾選狀態下搜索0
在勾選狀態下搜索1
重復這個步驟,直到篩選出唯一一個地址。
然后在這個地址上下內存寫入斷點,并且讓程序斷下
分析通用設置數據結構
eax+0x8就是我們要找的標志位,這里要往上追eax的值
基址=eax+0x8eax一般作為返回值來源于上面的call,但是上面一個call不會斷下,說明不來自于call,而是來自[ecx]
基址=[ecx]+0x8在這個位置下斷,查看[ecx]+0x8的值,這里我們發現不是我們要找的標志位,說明中間有代碼改變了ecx的值
一直F7往下走,發現有一個循環,先確定循環頭和循環尾,接著來分析整段代碼
先比較[eax+0x4]的值是否等于ebx,這里是循環的跳出條件。ebx等于0x69,這個0x69后續等分析完了整個結構大概可以猜到是什么。
接著edx自增1,edx的值在循環體外被初始化為0,說明這個edx相當于循環的i。然后比較edx和esi,esi的值為0x12,也就是說循環的次數最大為0x12,整個數據結構的總共有0x12個成員。
繼續往下
這里將ecx+4,數據窗口跟隨查看一下ecx,這種連續的地址明顯是一個數組。ecx是數組首地址。這個數組沒有用最常見的的[eax+ecx*4]的方式進行遍歷,而是用首地址一直+4的方式來遍歷整個數組。
再回到之前的偏移表達式
這里ecx來自于[edi+0x4],[edi+0x4]就是數組首地址
基址=[[edi+0x4]]+0x8這里就要修改一下這個偏移表達式了
基址=[[edi+0x4]+i*0x4]+0x8接下來確定數組下標
在循環跳出條件的地址下斷,觀察edx的值,此時edx等于4
當下標為4時,這個結構體數組指向我們要找的標志位
基址=[[edi+0x4]+4*0x4]+0x8繼續往上追edi
edi來自[esi+0x4]
基址=[[[esi+0x4]+0x4]+4*4]+0x8往上找esi
esi來自ecx
基址=[[[ecx+0x4]+0x4]+4*4]+0x8返回上層函數追ecx
ecx來自edi
edi又來自ecx,返回上層追ecx
ecx來自eax,進到上面的call追eax
這里我們看到eax來自于一個基址[0x6B706198],到這里,禁止更新的基址就找完了。
分析通用設置數組
接著我們來分析一下整個結構體數組
[[[[0x6B706198]+0x4]+0x4]+i*4]+0x8整個表達式可以拆分為下面幾部分
數組首地址=[[0x6B706198]+0x4]+0x4 數組下標=i*4 偏移=0x8首先來觀察數組的首地址,0x2B32A58就是整個通用設置結構體數組的首地址,下面的0x12是數組成員個數。數據窗口跟隨
這里是結構體數組,每一個成員都是一個結構體。再觀察下標為4的表達式內容
[[[[0x6B706198]+0x4]+0x4]+4*4]+0x8這里的值為0x69,正好是循環的結束條件,這個應該是類似功能ID之類的唯一標識。另外每一個下標都對應不同的通用設置,這里列出部分
i=2:開啟新消息提醒聲音 i=3:開啟語音和視頻通話提醒聲音 i=4:有更新時自動升級微信 i=5:熱鍵與其他沖突時提醒 i=6:適用系統縮放比例這里還會碰到一個很玄學的問題,每臺電腦的偏移不一樣,比如i=4在我這里是有更新時自動升級微信,在另外一臺機器上可能是i=7的時候是這個功能設置。
隨機的數組下標
想要解決這個問題,就要回顧之前的代碼
這一塊是整個數組的遍歷代碼,所有的通用設置都會走這段代碼,當勾選開啟語音和視頻通話提醒聲音時,這個功能ID為0x68
0x68:開啟新消息提醒聲音 0x172:開啟語音和視頻通話提醒聲音 0x69:有更新時自動升級微信 0x6D:保留聊天記錄所以修改通用設置的關鍵并不是數組下標對應的標志位,這個數組下標是隨機的。關鍵在于功能ID對應的標志位,有點類似Key->Value的組合
功能ID:[[[[0x6B706198]+0x4]+0x4]+i*4]+0x4 標志位:[[[[0x6B706198]+0x4]+0x4]+i*4]+0x8如果想要修改對應的通用設置,就要先比對功能ID,然后修改ID對應的標志位。到這里,整個通用設置算是分析完成了。
最后 附Github地址:https://github.com/TonyChen56/WeChatRobot
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的PC微信逆向:分析通用设置数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 012 分析技能冷却二叉树
- 下一篇: Avaddon勒索解密工具原理解析