日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PC微信逆向:分析通用设置数组

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PC微信逆向:分析通用设置数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 前言
    • 通用設置切入點
    • 分析通用設置數據結構
    • 分析通用設置數組
    • 隨機的數組下標

前言

微信版本2.8.0.121

分析訴求->通過代碼實現關閉微信通用設置里的“有更新時自動升級微信"。

通用設置切入點

這種復選框的設置無非就是一個標志位的問題,分析起來比較簡單,中間肯定會涉及到一些數據結構。作為開發者肯定不會把每一個設置選項都單獨存放,而是放在一個數據結構里方便管理。

首先用CE附加微信

在取消勾選狀態下搜索0

在勾選狀態下搜索1

重復這個步驟,直到篩選出唯一一個地址。

然后在這個地址上下內存寫入斷點,并且讓程序斷下

分析通用設置數據結構

eax+0x8就是我們要找的標志位,這里要往上追eax的值

基址=eax+0x8

eax一般作為返回值來源于上面的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微信逆向:分析通用设置数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。