PC微信读取微信好友列表(联系人)
开篇
PC微信端读取联系人有三种常规方法:
- hook相关call来实现拦截联系人数据
- 读取内存中的包含联系人的二叉树结构
- 解密读取微信本地数据库
其实前两种方法只是利用微信启动后已经读取联系人放到内存。第一种是拦截过程,第二种是直接获取内存的结果。
第一种方法
找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.顶部搜索没做(我没有申请APPID)没法预览,就没做 2.点击a,b,c导航到相应位置(和我之前写的仿小米商城那个例子一样) 3.争取复制就能用-下面是全代码 代码如下: wx ...
- 微信好友列表数据结构分析
目录 PC HOOK Hook方法获取列表 内存访问方式获取数据 分析结构 猜想结论 得出结论 追溯根节点 代码实现 拓展 声明 PC HOOK Hook方法获取列表 6B259EF7 |. 8D45 ...
- 获取qq号码性别 接口_用户诉QQ浏览器违法获取个人隐私!实测发现好友列表被自动提取...
日前,QQ浏览器因违法收集用户微信以及QQ账号的头像.性别.生日.好友列表等个人隐私信息,被用户起诉至江西某法院.法院审理后裁定腾讯公司立即停止在QQ浏览器App中获取上述用户隐私信息的行为,并对双方 ...
- python的读取微信界面_GitHub - lchb000/WechatPCAPI: 微信PC版的API接口,可通过Python调用微信获取好友、群、公众号列表,并收发消息等功能。...
WechatPCAPI 微信PC版的API接口,可通过Python调用微信获取好友.群.公众号列表,并收发消息,接受转账.好友请求.入群请求,群管理等功能.可用于二次开发在线微信机器人.微信消息监控. ...
- PC微信逆向:使用HOOK获取好友列表和群列表
文章目录 获取好友列表的切入点 定位查询好友信息的函数 定位微信号的地址 一次错误的尝试 再次查找目标函数 成功定位获取好友信息的函数 定位获取好友列表的函数 示例代码 实际效果 预告 获取好友列表目 ...
- 模仿微信好友列表功能(数据从手机中读取)
http://www.uml.org.cn/mobiledev/201110121.asp http://blog.csdn.net/jiahui524/article/details/7785606 ...
- python:获取微信好友列表信息(二)进行导出微信好友到csv数据读取与处理
接上一篇:https://blog.csdn.net/seoyundu/article/details/81543656 代码中:对csv文件读取,并利用pandas库处理,统计出好友信息. pand ...
- 初学Python第三天写的一个PC版模拟微信自动给好友发送消息
本程序能做什么: 在PC版的微信界面,模拟鼠标键盘动作,随机对好友列表里的某些好友发送文本消息和图片 (因为本人以前没有WINDOW UI的编程经验,所以这几天对WIN32UI接口基本是边学边搜边用, ...
- android 自定义view,字母排序(仿微信好友列表)
一:简言 一个月没有写博客了,公司项目比较忙,最近发现公司用到一个知识点,所以抽时间通过博客的形式分享给大家,该知识点,模仿微信的好友列表,通过字母索引进行定位,该功能主要通过几个知识点实现.下面会一 ...
最新文章
- YC陆奇发起知乎第一问:怎样的环境才能让更多AI创业公司成功?
- html导入.md文件并渲染,vue 导入.md文件(markdown转HTML)
- 「AI初识境」什么是深度学习成功的开始?参数初始化
- 使用Python的库qrcode生成二维码
- python setup.py install 安装的包 卸载方法
- python 技术篇-logging模块的日志定期清理设置,自动清理上个月的日志实例演示
- Codeforces 988E. Divisibility by 25
- WIF - claims-based identity
- tcp 服务端如何判断客户端断开连接
- 八、pink老师的学习笔记—— CSS用户界面样式(鼠标样式、轮廓线、防止拖拽文本域)
- python的gui界面 可视化_使用可视化设计窗体的GUI程序
- vector, list, deque的使用区别
- struts2 result随笔
- 现在Web前端培训,哪个机构比较好?
- 阿里云免费ssl证书更换指南2021.4
- python输入数字输出月份英文缩写_英文和数字表示的月份,如何在 Excel 中相互转换?...
- 2021年度汇总丨20大热门TWS耳机功能配置汇总解析
- 我的偶像王坚博士,一位执着的学者!
- 去中心化金融项目 Bloqboard FAQ
- 基于 HTML5 Canvas 的机房温度云图展示
热门文章
- pks系统怎么切换服务器,霍尼韦尔PKS系统维护及简单故障处理ppt课件
- 测试人高中低音的软件,【精】Q3原车音箱35TFS调试测试与高中低音设置,放音乐调试结果附最后...
- 计算机网络电缆被拔出是怎么办,网络电缆被拔出是什么意思
- Hisi3531D环境的搭建
- Mocha Pro 使用问答
- JavaScript蓝桥杯------学海无涯
- 全面布局5G 三星欲强势回归中国市场?
- 深化服务成工业品电商角逐新焦点
- 《计算机图形学》实验报告 Cohen Sutherland裁剪算法
- matplotlib.pyplot绘制常见激活函数图像