开篇

PC微信端读取联系人有三种常规方法:

  1. hook相关call来实现拦截联系人数据
  2. 读取内存中的包含联系人的二叉树结构
  3. 解密读取微信本地数据库

其实前两种方法只是利用微信启动后已经读取联系人放到内存。第一种是拦截过程,第二种是直接获取内存的结果。

第一种方法

找CALL请看:https://blog.csdn.net/qq_38474570/article/details/95889507

我就不复述了,我也是小白,也是一步一步按照博客来操作的。我就直接给当前最新版本(2.8.0.121)的需要hook的地址偏移:0x479F07,如果不想自己找CALL的话,可以直接用OD跳转到 WeChatWin.dll + 0x479F07 这个地址。已经知道需要hook的地址,只需要用c++写dll然后注入到微信进程就可以得到所有的联系人信息了(这个call会在登录时被调用多次,所以需要登录前就注入dll)

成品软件和dll(软件是用aardio写的,dll是用c++写的):https://www.lanzous.com/iakfpch

效果图:

第二种方法

相比于第一种方法,这个更简单,连写dll注入都不需要。只要读内存中的数据就行。

首先我们需要找到二叉树的根节点地址,方法请看:https://www.jianshu.com/p/b5585f03d849 (环境声太吵,人说话声音有点小,不过讲的不错)

最新版本(2.8.0.121)二叉树根节点的地址:[[WeChatwin.dll + 0x161CF54]+0x28+0x84] + 0x4,中括号表示取地址里面的值。这个地址的偏移也是通过第一个方法的call找出来的,而且第一个方法中的call进去的代码就是通过传入的wxid来循环遍历二叉树来获取该wxid对应的好友数据。

我们看一下call里面的汇编代码段:

然后用aardio来实现就是:

import process;
import console;getBTree = function(prcs, esi){  //前面不加var表示全局变量if (!prcs.readNumber(esi + 0xD, "byte")){  //cmp byte ptr ds:[esi+0xD],0x0//wxidwxidAddr = prcs.readNumber(esi + 0x10) //获取wxid地址wxidLen = prcs.readNumber(esi + 0x14)  //获取wxid长度wxid = prcs.readStringUtf16(wxidAddr, wxidLen) // 读取Unicode字符串wxid = string.fromUnicode(wxid)   //将Unicode字符串转换为utf-8//微信号微信号地址 = prcs.readNumber(esi + 0x44)微信号长度 = prcs.readNumber(esi + 0x48)微信号 = prcs.readStringUtf16(微信号地址, 微信号长度)微信号 = string.fromUnicode(微信号)//昵称昵称地址 = prcs.readNumber(esi + 0x8C)昵称长度 = prcs.readNumber(esi + 0x8C + 0x4)昵称 = prcs.readStringUtf16(昵称地址, 昵称长度)昵称 = string.fromUnicode(昵称)//备注备注地址 = prcs.readNumber(esi + 0x78)备注长度 = prcs.readNumber(esi + 0x78 + 0x4)备注 = prcs.readStringUtf16(备注地址, 备注长度)备注 = string.fromUnicode(备注)//v1v1Addr = prcs.readNumber(esi + 0x58)v1Len = prcs.readNumber(esi + 0x5C)v1 = prcs.readStringUtf16(v1Addr, v1Len)v1 = string.fromUnicode(v1)//未知a1a1Addr = prcs.readNumber(esi + 0xCC)a1Len = prcs.readNumber(esi + 0xD0)a1 = prcs.readStringUtf16(a1Addr, a1Len)//未知a2a2Addr = prcs.readNumber(esi + 0xE0)a2Len = prcs.readNumber(esi + 0xE4)a2 = prcs.readStringUtf16(a2Addr, a2Len)console.writeText(string.format("%s | %s | %s | %s", tostring(wxid), tostring(微信号), tostring(昵称), tostring(备注)) + '\n')左节点地址 = prcs.readNumber(esi)getBTree(prcs, 左节点地址)右节点地址 = prcs.readNumber(esi + 0x8)getBTree(prcs, 右节点地址)}
}var readData = function(){console.open()prcs = process.find("WeChat.exe")if (null == prcs){console.writeText('未找到微信进程,请先打开微信登录后操作!')return}wechatwinAddr = prcs.getModuleBaseAddress('WeChatWin.dll')ecx = prcs.readNumber(wechatwinAddr + 0x161CF54) + 0x28 + 0x84ebx = prcs.readNumber(ecx)     //mov ebx,dword ptr ds:[ecx]esi = prcs.readNumber(ebx + 0x4) //mov esi,dword ptr ds:[ebx+0x4] esi也就是二叉树的根节点getBTree(prcs, esi)console.pause('按任意键关闭!')
}
readData()

汇编代码中做了很多比较,是因为它要对比传入的微信ID和内存中的数据,而我们全都要则不需要对比,直接递归读取二叉树的左右节点即可。效果就不放了,自己下载aardio运行一遍就行。

PC微信读取微信好友列表(联系人)相关推荐

  1. 微信小程序-好友列表右侧字母导航功能

    效果如图: 介绍: 1.顶部搜索没做(我没有申请APPID)没法预览,就没做 2.点击a,b,c导航到相应位置(和我之前写的仿小米商城那个例子一样) 3.争取复制就能用-下面是全代码 代码如下: wx ...

  2. 微信好友列表数据结构分析

    目录 PC HOOK Hook方法获取列表 内存访问方式获取数据 分析结构 猜想结论 得出结论 追溯根节点 代码实现 拓展 声明 PC HOOK Hook方法获取列表 6B259EF7 |. 8D45 ...

  3. 获取qq号码性别 接口_用户诉QQ浏览器违法获取个人隐私!实测发现好友列表被自动提取...

    日前,QQ浏览器因违法收集用户微信以及QQ账号的头像.性别.生日.好友列表等个人隐私信息,被用户起诉至江西某法院.法院审理后裁定腾讯公司立即停止在QQ浏览器App中获取上述用户隐私信息的行为,并对双方 ...

  4. python的读取微信界面_GitHub - lchb000/WechatPCAPI: 微信PC版的API接口,可通过Python调用微信获取好友、群、公众号列表,并收发消息等功能。...

    WechatPCAPI 微信PC版的API接口,可通过Python调用微信获取好友.群.公众号列表,并收发消息,接受转账.好友请求.入群请求,群管理等功能.可用于二次开发在线微信机器人.微信消息监控. ...

  5. PC微信逆向:使用HOOK获取好友列表和群列表

    文章目录 获取好友列表的切入点 定位查询好友信息的函数 定位微信号的地址 一次错误的尝试 再次查找目标函数 成功定位获取好友信息的函数 定位获取好友列表的函数 示例代码 实际效果 预告 获取好友列表目 ...

  6. 模仿微信好友列表功能(数据从手机中读取)

    http://www.uml.org.cn/mobiledev/201110121.asp http://blog.csdn.net/jiahui524/article/details/7785606 ...

  7. python:获取微信好友列表信息(二)进行导出微信好友到csv数据读取与处理

    接上一篇:https://blog.csdn.net/seoyundu/article/details/81543656 代码中:对csv文件读取,并利用pandas库处理,统计出好友信息. pand ...

  8. 初学Python第三天写的一个PC版模拟微信自动给好友发送消息

    本程序能做什么: 在PC版的微信界面,模拟鼠标键盘动作,随机对好友列表里的某些好友发送文本消息和图片 (因为本人以前没有WINDOW UI的编程经验,所以这几天对WIN32UI接口基本是边学边搜边用, ...

  9. android 自定义view,字母排序(仿微信好友列表)

    一:简言 一个月没有写博客了,公司项目比较忙,最近发现公司用到一个知识点,所以抽时间通过博客的形式分享给大家,该知识点,模仿微信的好友列表,通过字母索引进行定位,该功能主要通过几个知识点实现.下面会一 ...

最新文章

  1. YC陆奇发起知乎第一问:怎样的环境才能让更多AI创业公司成功?
  2. html导入.md文件并渲染,vue 导入.md文件(markdown转HTML)
  3. 「AI初识境」什么是深度学习成功的开始?参数初始化
  4. 使用Python的库qrcode生成二维码
  5. python setup.py install 安装的包 卸载方法
  6. python 技术篇-logging模块的日志定期清理设置,自动清理上个月的日志实例演示
  7. Codeforces 988E. Divisibility by 25
  8. WIF - claims-based identity
  9. tcp 服务端如何判断客户端断开连接
  10. 八、pink老师的学习笔记—— CSS用户界面样式(鼠标样式、轮廓线、防止拖拽文本域)
  11. python的gui界面 可视化_使用可视化设计窗体的GUI程序
  12. vector, list, deque的使用区别
  13. struts2 result随笔
  14. 现在Web前端培训,哪个机构比较好?
  15. 阿里云免费ssl证书更换指南2021.4
  16. python输入数字输出月份英文缩写_英文和数字表示的月份,如何在 Excel 中相互转换?...
  17. 2021年度汇总丨20大热门TWS耳机功能配置汇总解析
  18. 我的偶像王坚博士,一位执着的学者!
  19. 去中心化金融项目 Bloqboard FAQ
  20. 基于 HTML5 Canvas 的机房温度云图展示

热门文章

  1. pks系统怎么切换服务器,霍尼韦尔PKS系统维护及简单故障处理ppt课件
  2. 测试人高中低音的软件,【精】Q3原车音箱35TFS调试测试与高中低音设置,放音乐调试结果附最后...
  3. 计算机网络电缆被拔出是怎么办,网络电缆被拔出是什么意思
  4. Hisi3531D环境的搭建
  5. Mocha Pro 使用问答
  6. JavaScript蓝桥杯------学海无涯
  7. 全面布局5G 三星欲强势回归中国市场?
  8. 深化服务成工业品电商角逐新焦点
  9. 《计算机图形学》实验报告 Cohen Sutherland裁剪算法
  10. matplotlib.pyplot绘制常见激活函数图像