PCXX逆向:分析獲取羣成員列表的call(part1)

獲取羣好友的相關思路

在微信點開羣列表的時候會顯示所有的羣成員,這個就是我們的突破口。

在這裏插入圖片描述

這個動作的編程邏輯在於,當我們點擊羣的時候,微信需要傳入這個羣的ID,然後取出所有的羣成員,顯示到界面上。那麼思路就來了,我們可以拿到當前羣ID的地址,然後對這個地址下訪問斷點,接着棧回溯分析

定位獲取羣好友列表的call

獲取羣ID

在這裏插入圖片描述

首先將當前聊天窗口定位到文件助手,然後搜索filehelper

在這裏插入圖片描述

接着切換當前聊天窗口,搜索wxid_

在這裏插入圖片描述

把地址添加到下方地址欄,然後將顯示的範圍擴大

在這裏插入圖片描述

然後我們點開羣列表,再點擊發送消息

在這裏插入圖片描述

就能拿到這個微信羣的ID了。我們記錄下這個羣ID

篩選當前窗口的羣ID

我們已經拿到需要的羣ID了,接着來定位一下當前窗口的羣ID

在這裏插入圖片描述

將窗口定位到羣列表,然後搜索這個羣的ID,

在這裏插入圖片描述

接着我們變換羣列表,然後搜索這個羣的羣ID

在這裏插入圖片描述

加入到下方地址欄

在這裏插入圖片描述

此時地址欄中的ID會跟隨當前羣窗口的ID變換而變換

定位當前窗口的羣ID

這麼多地址,那麼我們怎麼確定唯一的一個呢?很簡單

在這裏插入圖片描述

當前我所在的羣ID是The Magic Way的羣ID

在這裏插入圖片描述

接着我們切換到聊天界面,此時羣ID不會變化

在這裏插入圖片描述

接着我們選擇一半地址,將這一半選中的地址更改爲14軟件三班的羣ID

在這裏插入圖片描述

此時我們再次點擊聯繫人,如果這個時候羣成員的列表變成了14軟件三班的羣成員列表,那麼就說明前面四個中的一個就是當前窗口的羣ID,我們就刪除後面三個。反過來,如果沒有變化,就說明前面四個不是我們要的當前窗口的羣ID,我們就直接刪掉前面四個地址

在這裏插入圖片描述

點擊聯繫人,我們發現當前羣成員的列表已經變成了14軟件三班的羣成員列表,說明前面四個地址中有我們需要的。刪除後三個。重複上面的步驟,直到篩選出唯一一個羣ID

定位獲取羣好友列表call

在這裏插入圖片描述

接着我們給這個地址下一個內存訪問斷點

在這裏插入圖片描述

點擊羣列表,此時程序斷下,刪除內存斷點,分析附近的堆棧地址

我們要在堆棧中找一個call,傳入了我們當前點擊的羣ID。我剛纔點擊的是14軟件三班,羣ID是1741784456@chatroom。我們要在堆棧中找這樣一個帶羣ID參數的call

在這裏插入圖片描述

這個就是我們需要的call

在這裏插入圖片描述

我們在這個地址下斷,然後切換羣爲The Magic Way,此時程序斷下。找到了這個call,就說明離我們想要的獲取羣成員的call不遠了。單步往下跟蹤

在這裏插入圖片描述

這裏有一個call,傳入了當前的羣ID

在這裏插入圖片描述

和自己的微信ID,這個有可能就是我們需要的call,我們F7進去

在這裏插入圖片描述

在裏面看到有一個call傳入了數據庫的句柄,但是還是沒有我們想要的東西,繼續單步往下跟

在這裏插入圖片描述

這裏也有一個call,傳入的參數是一個羣ID,我們F7進去這個函數

在這裏插入圖片描述

這裏有一個call,傳入了兩個參數,eax是比較大的一個緩衝區,

在這裏插入圖片描述

ebx是羣ID,那麼可以猜測,這個call的作用是通過傳入一個羣ID獲取到羣成員之後,將羣成員放入到緩衝區裏。我們F8步過這個函數

在這裏插入圖片描述

此時eax返回了一個數據庫的句柄

在這裏插入圖片描述

然而緩衝區沒有任何變化。這裏我們可以猜測程序的流程是先獲取數據庫句柄,然後用數據庫句柄發起sql請求,拿到數據,接着寫入到緩衝區。

接着我們繼續往下跟,看看在什麼時機往裏面寫入了數據

在這裏插入圖片描述

再次步過函數,發現此時緩衝區裏有大量的微信ID,數據窗口跟隨這個地址

在這裏插入圖片描述

這裏把所有的數據用一個特殊字符隔開,繼續往下單步

在這裏插入圖片描述

此時eax的返回值指向了一個地址,我們數據窗口跟隨這個地址

在這裏插入圖片描述

裏面顯示的是已經處理好的所有的羣成員的ID,那麼我們就可以確定這個call可以拿到所有處理好的羣成員的列表

但是光找到這個call還不夠,我們需要拿到羣成員的數量,才方便我們寫代碼循環獲取羣成員。F9運行程序,然後記錄下羣成員的數量

在這裏插入圖片描述

點擊The Magic Way,記錄下276的十六進制是114

在這裏插入圖片描述

在[eax+0xA4]的位置保存有當前選中羣的成員數量。這個地方可以拿到所有羣成員的微信ID,而想要拿到羣成員的其他信息,還需要找另外一個call。下篇文章見。

目前微信機器人的成品已經發布,需要代碼請移步Github。還請親們幫忙點個star

https://github.com/TonyChen56/WeChatRobot

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章