点击注册
点击注册
.
.

澳门旅游攻略

(干货)做菠菜难以获取用户裂变使用x64dbg教你获取微信所有联系人信息

发布日期:2022-03-28 23:02    点击次数:95

(干货)做菠菜难以获取用户裂变使用x64dbg教你获取微信所有联系人信息

菠菜运营过程中,新客户难以获取,微转用户成本高,本文教你分析微信的联系人信息,完成对联系人、群信息的获取。完整代码会放在github上。


蓝铁在逆向分析时的三种分析思路


我们在逆向工程中,分析方法一般是多种方法尝试。以分析微信联系人列表为例,我们可以从三方面入手来分析:


自上而下分析法此方法是从界面开始分析,也就是从窗口回调函数开始分析界面相关的代码,从界面中获取到联系人信息,这种分析方法如果对UI库(微信用的是DuiLib库)比较熟悉的话,分析起来会比较好一些。


自下而上分析法此方法是从API的调用开始,向上栈回溯分析,一般在我们破解一些有注册弹窗的程序会比较好下断点,而分析微信联系人列表没有弹窗信息,所以这块分析起来需要猜测API,再分析。


字符串分析法此方法可以说在任何时候都可以进行分析,比如分析联系人列表,可以从Contact或ContactList入手开始分析。


在分析微信联系人信息时,我采用了三种方法相结合的方式,起初使用的是自下而上分析法,从API入手,因为在上一节对微信发信息的函数分析时,是一步一步向上栈回溯分析的,想的也可以采用类似的方式,但在跟踪过程中耗费了大量时间找信息,并没有找到稳定的数据列表。所以最终放弃这种方法,而从UI层分析,需要先对UI库熟悉一下,而现在一心只想获取数据,不想学UI,所以只能用字符串分析法了。而使用字符串分析,发现也是没有结果。回过头来,依然使用API下断的方式,这时由于前面分析和跟踪的过程中,已经对微信的代码熟悉了,发现微信中所有的信息分为两种方式存储,第一种是UI上会有存储,第二种是数据库存储,第一种PASS,选择第二种最终找到了关键函数。下面就是我尝试的两种方式。


使用字符串分析法分析无果


首先使用x64dbg附加正在运行的微信,在符号选项卡中选择微信的通信逻辑模块wechatwin.dll:



然后搜索当前模块的字符串,在字符串中过滤Contact:



会发现Contact字符串还是很多的,换另一个ContactList过滤,发现少了一些。



仔细观察过滤出的字符串,有几个看起来可能有关,我试了两个,最终并没找到相关代码。写出分析的过程主要就是告诉大家逆向本不是一帆风顺,有时在分析时会无功而返,在这个时候需要耐心,总会有出路的!


巧用sql语句执行函数找到获取联系人信息函数


在分析发信息的函数时,底层找到了执行sql语句的函数,由于执行这个函数会多次调用,经过下断观察,发现有和联系人相关的sql语句。(蓝铁提示:注意获取联系人信息的代码是在微信扫码之后执行的,所以需要在微信扫码之前使用x64dbg附加程序并下断点)



在动态跟踪的过程中,在上面代码断下后的上两层代码中,又一次调用了Sql执行函数,sql语句和上图基本一致,再继续跟踪的过程中,发现了获取微信ID的函数。



继续向下跟踪时,找到了获取微信号信息的函数。



经过跟踪,发现这段代码是一个循环,每次获取到微信号信息不一样,并且还有群信息。如果我们能自己实现这个循环就能完成获取联系人以及群信息。但看上下文函数调用比较多。所以采用hook的方式对上图中调用的函数进行Hook是一种比较好的方法。hook的点在此:


0CCBA0C6 | E8 45 0D 00 00 | call | 获取微信号信息,hook点 巧用inline hook提取联系人以及群名称


我们知道一般 inline hook 是在函数的开始处进行Hook,而在这个代码中发现我们要Hook的这个CALL引用的地方是比较多的,也就是说有很多地方都调用了这个函数,所以我们采用的方式是只hook我们调用的这个点。(蓝铁提示:在x64dbg中,选中函数开始处,使用快捷键x,可以查看所有引用这个函数的代码



)我们hook的代码是将0CCBA0C6处代码call 获取微信信息改成我们自己的函数,然后在我们自己的函数中保存微信信息,之后再跳过来。原理图如下:



原理有了剩下的就是写代码,不过写代码前需要先分析一下函数调用的参数以及我们保存的参数的结构,即微信联系人信息的结构。经过多次调用观察堆栈信息,得出了以下结果。


call参数: 第一个是传出缓冲区,获取微信联系人信息 第二个是sql执行返回的对象,即查询对象或结果集对象 我们关注的是第一个,调用之后会得到联系人信息 传出缓冲区即为传出对象 +0x8 微信ID +0x1C 微信号 +0x48 标志位,1代表联系人,2代表群,3代表服务号 +0x4C 0x0 代表个人,0x8代表普通订阅号,0x18 代表订阅、服务号,0x1C 代表系统服务 +0x50 微信备注 +0x64 服务名称或微信名称 +0xA4 拼音简称(全大写) +0xB8 拼音名称(全拼小写)


Hook的关键代码:


// 1. 计算虚拟地址,模块基地址+RVA地址 HMODULE hMod = ::GetModuleHandle(L"wechatwin.dll"); DWORD dwEIPAddr = (DWORD)hMod + 0x3AA0C6; DWORD dwCallAddr = (DWORD)hMod + 0x3AAE10; // 2. 修改代码属性 DWORD dwOldType = 0; ::VirtualProtect((LPVOID)dwEIPAddr, 5, PAGE_EXECUTE_READWRITE, &dwOldType); // 3. 读取代码 DWORD dwRead; HookData stcReadData; ::ReadProcessMemory((HANDLE)-1, (LPVOID)dwEIPAddr, &stcReadData, 5, &dwRead); // 4. 写入代码 HookData stcWriteData(0xE9, dwEIPAddr, (DWORD)NakeHookCall); ::WriteProcessMemory((HANDLE)-1, (LPVOID)dwEIPAddr, &stcWriteData, 5, &dwRead); // 5. 恢复属性 ::VirtualProtect((LPVOID)dwEIPAddr, 5, dwOldType, &dwOldType); // 6. 记录原函数返回地址 g_dwRetAddr = dwEIPAddr + 5;


从原函数跳转到的Hook代码


DWORD g_dwRetAddr; // 用于保存返回到原函数的地址 void _declspec(naked) NakeHookCall { _asm { mov g_OutObj, esi // 保存参数1,从这个值中获取微信信息 mov eax, g_hMod; // add eax, 0x3AAE10; // 计算调用函数 call eax // 调用获取微信联系人信息函数 mov eax, SaveInfo call eax // 调用自己的函数保存微信联系人信息 push g_dwRetAddr // 跳转回原函数 ret } }


保存联系人的代码:


vector g_vector; // 保存微信联系人 void SaveInfo { // 执行到Hook点,每次都会调用这个函数保存微信联系人 MyWXContactInfo obj(g_OutObj); g_vector.push_back(obj); }


自己定义的微信联系人类:


class MyWXContactInfo { public: // +0x8 微信ID // +0x1C 微信号 // +0x48 标志位,1代表联系人,2代表群,3代表服务号 // +0x4C 0x0 代表个人,0x8代表普通订阅号,0x18 代表订阅、服务号,0x1C 代表系统服务 // +0x50 微信备注 // +0x64 服务名称或微信名称 // +0xA4 拼音简称(全大写) // +0xB8 拼音名称(全拼小写) MyWXContactInfo(DWORD dwObj) { m_wxID = *(wchar_t**)(dwObj + 0x8); m_wxNum = *(wchar_t**)(dwObj + 0x1C); m_wxFlag1 = *(DWORD*)(dwObj + 0x48); m_wxFlag2 = *(DWORD*)(dwObj + 0x4C); m_wxBeizhu = *(wchar_t**)(dwObj + 0x50); m_wxName = *(wchar_t**)(dwObj + 0x64); } wchar_t* PrintString { CString strObj; strObj.Format(L"ID:%s NUM:%s f1:%p f2 %p,Beizhu:", m_wxID, m_wxNum, m_wxFlag1, m_wxFlag2); if (m_wxBeizhu) { strObj += m_wxBeizhu; strObj += " "; } if (m_wxName) { strObj += m_wxName; strObj += " "; } OutputDebugString(strObj.GetBuffer); return strObj.GetBuffer; } public: wchar_t* m_wxID; // +0x8 微信ID wchar_t* m_wxNum; // +0x1C 微信号 int m_wxFlag1;// +0x48 标志位 int m_wxFlag2;// +0x4C 0x0 wchar_t* m_wxBeizhu;// +0x50 wchar_t* m_wxName;// +0x64 };


除此之外,当然获取信息之后,还需要进行过滤,经过人肉分析之后,发现微信联系人结构中0x48和0x47是两个标志,可以使用这两个标志过滤群列表和联系人列表。


测试结果


测试代码还是写在了DLL中,所以测试的顺序是:


1.开微信


2.注入DLL


3.在测试对话框中点击按钮Hook获取联系人


5.打开DebugView


6.在测试对话框中点击按钮获取群列表


7.在测试对话框中点击按钮获取联系人列表


总结


在分析微信联系人过程中,我们会发现,从一个商业软件中获取一组信息还是比较麻烦的,最终我们使用了Hook这种方式完成了功能,而写代码和分析两者其实做好都比较难,所以合格的逆向工程师,两者能力都应该具备!



澳门网上赌场资讯
  • 谁让你一天到晚浏览不干净的网站

    之前有一个哥们儿告诉我,他运营接近快3年的知乎号被封了,原因就是有人盗用他的知乎号,去回答和发布了一些违规的东西,最终才导致封号澳门旅游攻略,他在我面前诉苦诉的啊,一直在我问该怎么办,说他知乎上面的粉丝多么多,账号等级多么高等等的,我只冷冷的回复了他两个字:活该!然后接着说,谁让你一天到晚浏览不干净的网站,被盗号是正常...

  • MiriamAdelson榮登福布斯2022全球富豪榜菠菜業榜首呂志和冠絕亞洲

    2021年過世的拉斯維加斯金沙(LVS)集團創始人蕭登·艾德森的妻子Miriam Adelson成為福布斯2022全球富豪榜上排名最高的博彩業大亨。 艾德森LVS集團53.7%的股份,在2022年榜單上以275億美元的財富排...

  • 菠菜有哪些后遗症呢

    从黑彩(3D)到后来的时时彩,分分彩,11选五,快乐28,AG、AE....今天跟大家讲述一位投稿人的亲身经历,是如何接触菠菜又是如何一步步堕落,今天主人公叫小A,用了13年的时间,硬生生把自...

  • 伊斯坦布尔新机场免税店上线微信支付

    中国工商银行(土耳其)股份有限公司(工银土耳其)、腾讯、伊斯坦布尔新机场运营公司和新机场免税店28日联合举办微信支付业务线上签约活动。自此,中国游客可在伊斯坦布尔新机场免税...

  • 澳门理工学院发布“赌客疲劳赌客菠菜行为演变趋势”研究成果

    澳门理工学院博彩旅游教学及研究中心于7月20日发布了“赌客疲劳:赌客博彩行为演变趋势”研究成果。此研究成果为该中心教授曾忠禄带领研究团队承担的国家自然科学基金与科学技术发展...

澳门资讯

TOP
友情链接:

Powered by 澳门旅游攻略 @2013-2022 RSS地图 HTML地图

网站统计——

  • 谷歌搜索留痕推广
  • 谷歌搜索留痕排名技术
  • 谷歌快速排名
  • 留痕方法
  • 谷歌搜索快速方法
  • google搜索留痕程序
  • 谷歌快速排名
  • 澳门太阳城
  • 最大博彩公司
  • 谷歌搜索关键词排名
  • 搜索留痕程序
  • 谷歌排名出售
  • 谷歌蜘蛛池排名
  • 搜索留痕软件
  • 缅甸果敢赌场
  • 电子游艺规则
  • 谷歌留痕推广
  • google引流程序
  • 谷歌快速排名
  • google引流程序
  • 留痕推广
  • 大西洋城赌场
  • 买球地址
  • 搜索留痕
  • 搜索留痕程序出售
  • 谷歌蜘蛛池排名技术
  • 留痕程序
  • 如何提高google搜索排名
  • 数字币博彩
  • 洗钱方法
  • Google留痕收录
  • 最新谷歌搜索留痕排名
  • 搜索留痕
  • Google留痕收录
  • google搜索留痕
  • 数字币博彩网站
  • 足球投注平台
  • 博彩推广话术
  • 推广引流方法
  • 引流方法
  • 博彩推广话术
  • 网上博彩推广引流
  • 数字币赌场
  • 皇冠现金网
  • 蜘蛛池排名
  • 谷歌蜘蛛池
  • 留痕程序出售
  • google搜索留痕程序
  • 比特币网上赌场
  • 洗钱平台
  • 搜索留痕
  • 博彩推广方式
  • 网上博彩推广
  • 快速排名
  • 搜索留痕程序
  • bbin平台大全
  • 体育博彩公司排名
  • 留痕排名技术
  • 最新谷歌关键词排名
  • 推广渠道
  • 谷歌快速排名
  • 博彩推广
  • 世界杯赌球地址
  • 皇冠博彩公司
  • 谷歌排名出售
  • 博彩引流渠道
  • 搜索留痕程序
  • google搜索留痕
  • 引流渠道
  • 果敢网上赌场
  • 世界杯赌球
  • 搜索留痕方法
  • 博彩搜索留痕
  • 博彩引流
  • 博彩引流
  • 搜索留痕
  • 缅甸网上赌场
  • 欧洲杯赌球
  • 谷歌搜索排名
  • 留痕程序
  • 网上博彩推广引流
  • 留痕技术
  • 搜索留痕技术出售
  • 澳门威尼斯人网上赌场
  • 外围博彩
  • 博彩网站推广
  • 推广引流
  • 留痕程序出售
  • 谷歌推广引流技术
  • 推广引流方法
  • 美国在线赌场
  • 沙巴体育投注平台
  • 最新谷歌搜索留痕
  • 谷歌蜘蛛池排名技术
  • 网站推广方法
  • 留痕程序出售
  • 博彩推广方法
  • 菠菜论坛
  • 买球平台
  • 谷歌搜索留痕
  • 蜘蛛池排名
  • 博彩公司推广渠道
  • 谷歌搜索留痕
  • 博彩公司推广渠道
  • 真钱游戏
  • 网上赌球地址
  • 赌球平台推荐
  • 赌球网址
  • 博彩包网
  • 买球app
  • 澳门博彩公司
  • 威尼斯人赌场
  • 博彩平台推荐
  • 美国博彩网站
  • 缅甸实体赌场
  • 柬埔寨网上赌场
  • 柬埔寨在线赌场
  • 韩国博彩
  • 支持人民币的博彩公司
  • 世界五大比特币交易所
  • 欧易是哪个国家的
  • 中币跑路
  • 亚洲博彩公司
  • 合法网上赌场
  • 马尼拉赌场
  • 支持人民币的博彩公司
  • 大陆博彩平台
  • 澳门新葡京娱乐城
  • 老挝赌场
  • 世界赌场排名
  • 网上博彩公司排行
  • 菠菜论坛
  • 东南亚赌博网站
  • 虚拟币博彩
  • 澳门百家乐网址
  • 网上博彩导航
  • 区块链百家乐游戏
  • 马来西亚博彩公司
  • 越南赌场
  • 区块链百家乐
  • 香港娱乐场
  • 澳大利亚赌博网站
  • 足球赔率
  • 菲律宾网上赌场
  • 数字币博彩网站
  • 足球投注网站
  • 百家乐论坛
  • 皇冠体育博彩公司
  • 网上赌博网站
  • 网上博彩推广话术
  • 谷歌搜索快速方法
  • 网上博彩推广话术
  • 数字币赌场
  • 皇冠博彩公司
  • 世界杯博彩公司
  • 英国博彩公司
  • 网上博彩合法化
  • 新加坡赌场
  • 比特币网上赌场
  • 怎么洗钱
  • 加密货币博彩平台
  • 世界杯赌球网址
  • 网上赌球地址
  • 博彩推广方式
  • 印度尼西亚博彩公司
  • 国际包网
  • bbin平台直营
  • 亚洲体育博彩平台
  • 越南博彩公司
  • 百家乐路单
  • 澳门博彩官网
  • 博彩网推荐
  • 澳门太阳城网址
  • 百家乐网址
  • 世界杯赌球网址
  • 皇冠博彩网址
  • 洗钱方法
  • 买球网站
  • 欧洲杯赌球平台
  • 皇冠现金网
  • 外围赌球平台
  • 果敢赌场
  • 买球技巧
  • 全球最大博彩公司
  • 电子游艺
  • 真人电子游戏
  • 骰宝游戏规则
  • 亚洲体育博彩平台
  • 澳门在线赌场
  • 缅甸赌场地址
  • 赌球平台
  • 赌场如何赢钱
  • 世界杯买球网站
  • 真人牌九游戏
  • 世界杯买球官网
  • 时时彩平台
  • 六合彩预测
  • 威尼斯人网上赌场
  • 外围赌球网站
  • 赌博网址
  • 彩票群
  • 微信赌博群
  • 韩国首尔赌场
  • 赌钱游戏
  • 美国网上赌场
  • bbin官网
  • 沙巴体育官网
  • 博彩平台推荐
  • 数字币博彩网站
  • 比特币网上赌场
  • 世界赌场名单
  • 美国赌场攻略
  • 菠菜论坛排名
  • 菠菜论坛排名
  • 缅甸网上赌场
  • 支持人民币的博彩公司