微信群好友批量导出软件

学了pc微信Hook,肯定要做些相关软件的,比如就是微信机器人微信群好友自动添加软件微信群好友资料批量导出软件等等。这里面涉及到的基本上都是微信群相关的东西。咱们看市面上的教程学习的话,hook的点都是在程序打开前就把dll注入到微信里面,然后等微信加载比如好友列表,群列表的时候,咱们再把它Hook到咱自己这边来,数据就有了。

其实呢,好友列表,群列表,包括群好友列表等等,微信都是把它存在sqlite数据库里面的,只要搞定了sqlite数据库想要什么数据都有了。

微信的sqlite数据库是有加密的,单纯把db文件拿过来,是无法正常打开连接的,所以要搞定数据库,就有2种办法

  1. 是拿到加密的32位key,然后网上找下,有相关的文章及代码是教怎么解密的。

  2. 是拿到打开数据库的句柄,微信在打开sqlite后,这个句柄是没有关闭的,它是直到程序结束才关闭,所以咱们只要拿到这个数据库句柄就可以操作数据库了。

咱们今天就来讲第2种方法,我自己也是看着hook教程学起来的,教程里面hook数据库句柄都是在微信登录前把程序注入到微信里面,然后hook打开数据库的地方拿到数据库句柄。不过后面我这边有个场景是要等用户微信开起来后,再去查询用户群列表啊,好友列表啊之类的,那就得重新想办法了。

前面说过微信的数据库句柄打开后是不关闭的,在要查询数据库的时候,把句柄拿过来做相关查询,所以可以推断句柄是放在全局变量的,也就是放在DS(Data Segment)数据段里的,咱们只要找到它,算出它的偏移,就是数据库句柄了。

原理说了这么多,开始实操吧,拿出ida,查找sqlite的1个函数,微信sqlite相关方面的东西,大家去看看赵老师的教程就明白了,在此不多说。

  1. 打开ida,快捷键shift+f12,查找"sqlite3_prepare_v2"。
            1.png

  2. 双击进去,按"X",查看交叉引用,随便点一个进去

    2.png

  3. 在里面找到sqlite3_prepare_v2函数地址,可能你说你的ida怎么没这个函数。因为这个函数是我这边已经 分析出来的,所以你那边是需要自己分析的,至于怎么分析出这个函数,还是老话,再去看看赵老师的教程就会了。

    4.png

  4. 找到sqlite3_prepare_v2函数后,拿出相对偏移计算工具,算出od对应的位置,然后进去设断点,设完断点后,只要涉及到数据库操作,就可以正常断下来,这个函数的第1个参数就是数据库句柄,所以还要再层层往上追,具体追的步骤就不贴了,反正哥是追了好几层好几层才追到最终赋值的地方,顺便说下,在每一层里面的,句柄基本都是在edi+0x3c或者ecx+0x3c里面,只要这一层里面这2个位置里有句柄的值,咱就继续往上层追。然后会追到最终层,出现类似下图的位置。

    5.png

    看到没有,它其实是从ds数据段取值赋给edi的,所以这个就是数据库句柄所在的,剩下的就是取偏移,写代码了。

这个就是开发微信机器人微信群好友自动添加软件微信群好友资料批量导出软件里面要涉及到的微信数据库句柄hook的相关教程知识。

联系客服