• 微信群成员批量导出/提取工具__开发第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,载入微信,定位到数据库调用的地方。

      

  • 相关阅读:
    消灭WinRAR广告
    DLL:操作数据库和表
    MySQL的概述和基础(学习整理)
    MySQL个人用户的安装配置详解
    Maven的几种新建项目方式
    解决Maven的jar包冲突问题
    Maven Web项目出现org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException错误
    Maven的概述和基础(学习整理)
    从Maven中央仓库下载jar包
    Maven的New中没有Servlet问题(IDEA)
  • 原文地址:https://www.cnblogs.com/qing123/p/14672095.html
Copyright © 2020-2023  润新知