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

      

  • 相关阅读:
    Python系列:四、Python函数--技术流ken
    Centos7破解密码的两种方法--技术流ken
    Python系列:三、流程控制循环语句--技术流ken
    Python系列:二、数据类型--技术流ken
    Python系列:一、Python概述与环境安装--技术流ken
    zabbix实现百台服务器的自动化监控--技术流ken
    学会这个删库再也不用跑路了~ --技术流ken
    五分钟彻底学会iptables防火墙--技术流ken
    Docker之使用Dockerfile创建定制化镜像(四)--技术流ken
    Docker数据卷Volume实现文件共享、数据迁移备份(三)--技术流ken
  • 原文地址:https://www.cnblogs.com/qing123/p/14672095.html
Copyright © 2011-2022 走看看