微信群成員批量導出/提取工具__開發第2篇


系列文章索引:

  1. 微信群成員導出/提取工具推薦及排行
  2. 微信群成員批量導出/提取工具__開發第2篇  
  3. 微信群成員批量導出/提取工具__開發第3篇

  

  上一篇我們列舉了當前市面上的幾款“微信群成員批量導出/提取工具",也說了下相關的開發背景,這一篇我們就開始實打實的入門開發篇。

  咱們這一系列文章的前提是您要會這么些門語言及相關知識,不然看起來的話,保證您暈頭轉向找不着北。

  開發語言:匯編,c++,c#,

  工具:od,ida,ce

  首先說下開發語言吧,c++毋庸置疑,因為到后面我們要寫內聯匯編,然后寫dll給客戶端exe調用。

  再說c#,用c#是因為咱后面的客戶端打算用c#開發,有些同學可能會問為什么不直接就用c++做界面開發呢。以我淺薄的c++開發經驗,我只能說以后寧願用vb,用易語言,再也不用c++做界面開發了。

  第1:控件功能過於簡陋,比如要實現個列表框多選的,非得用winapi,當然不排除也有mfc之類的能實現,但是個覺得為啥有更好用的c#不用,非得用老古董的東西呢。

  第2:類庫太少了,比如像c#集成的base64,md5,websocket啊。c++得去網上好找一翻,才能找齊

  第3:......

  第4:......

  總之吧,咱還是挑比較便利的來做開發。

  要開發”微信群成員批量導出/提取工具“,首先第一步,就是要獲取微信群列表。怎么獲取呢,這里有2種方法,第一種是從微信內存里面讀取,因為微信會把群列表包括聯系人列表都放在內存里面,然后存成1個二叉樹結構,每次讀取的時候都從內存上讀取,速度才會快,相關教程網上都有,大家可以找下相關文章看看。不過我們要用的是另外一種:從數據庫里面獲取微信群列表,為什么呢?因為吧,微信數據庫里面的列表是最全,它包括了以前很久不說話的群甚至連退出的群都有記錄。咱們秉着要做就做個大的來的想法,所以咱從微信的數據庫上獲取微信群列表及微信成員列表資料。

  微信的數據庫使用的是sqlite,但是是有加密的,所以直接把微信的sqlite數據庫拷出來,也是沒辦法用相關sqlite數據庫管理工具打開訪問的。

  既然是加密的,那咱們是不是要進行解密呢。不,雖然解密也是一種方法,但是咱們要獲取的是比較實時的數據,所以咱們采用另外一種方法,就是獲取微信的數據庫句柄,把它的句柄拿過來,咱們就可以對數據庫為所欲為了。之所以可以這么做,是因為微信打開sqlite數據庫句柄后,並不關閉這個句柄,因為如果用一次關一次,那其實是挺浪費資源的,所以微信打開數據庫句柄后就把句柄存在一個全局變量里,要查詢數據庫的時候,就拿過來用。

  原理說明白了,咱就知道怎么搞了,因為全局靜態變量在匯編里面的話,它就會有個基址,咱只要找到這個基址,算下偏移,只要是相同的微信版本,不管哪台電腦咱就都可以找到它了。說干就干,拿出od,載入微信,定位到數據庫調用的地方。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM