吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 4007|回复: 85

[经验资料] HOOK获取好友列表和群列表

  [复制链接] 出处:吾爱破解
ShareKing 发表于 2022-2-4 10:53 | 显示全部楼层 |阅读模式

获取好友列表目前有三种方法,第一种就是二叉树遍历,通过一层一层的往下读取来拿到所有的好友列表。第二种是通过在内存里面找好友的地址列表。第三种就是通过查找微信数据库来获取列表获取好友列表的切入点要想获取微信的好友列表,就必须找到微信读取好友列表的地方。突破口在于微信在点击个人名片时,会获取当前联系人的详细信息,然后显示在右侧。那么我们可以大胆猜测 微信在登陆的时候,需要先调用这个call,循环拿到所有好友的详细信息,然后再显示到右侧

第一步:我们首先要找到微信获取好友详细信息的函数。这个函数在读取好友列表时必然会被调用,第二步,再通过这个函数找到获取好友列表的地方。另外还有一种方法就是通过好友的数量,先搜索当前好友的数量,然后删除一个,再次搜索。直到找到保存好友数量的地址。定位查询好友信息的函数那么如何找到查询好友信息的函数呢?突破口在于当前窗口的微信号,只要找到微信号的地址,然后对微信号下内存写入断点,栈回溯分析就能找到我们需要的函数。定位微信号的地址 151918ippwckz8pw7hzo5w.png
首先搜索当前的微信号,勾选Unicode 151940wmcwyvlwyeeoy5yy.png
接着切换联系人,再次扫描 152000fcpapdf1eapdcmgz.png
最终会剩下五个结果,我们需要逐个排查每一个结果一次错误的尝试 152013sjeu11k7bdcddgc6.png
随便找一个地址,下内存写入断点。然后切换当前联系人窗口,断点断下。删除内存断点。我们需要找到一个地址,地址里面包含联系人的所有信息 152034vjuaww1ejoboezeu.png
在堆栈的地址中我们发现了一个返回地址,返回地址下面有微信的个人数据。那么这个有可能就是我们需要的call切换当前窗口联系人,等待断点断下 152048x10yqqkklyzzs0s9.png
此时,堆栈和eax寄存器中保存了当前联系人的所有数据 152058rhlamraxhlhx4xxc.png
继续往下拉会发现eax中保存有签名和国家等信息。也就是说这个call里面保存了当前聊天窗口的好友的所有信息。接着我们删除好友,让好友列表刷新,看看这个地方会不会断下来。如果会断下来,那么这个地方就有可能保存了所有好友的信息。 152110on5xuvz0oe3fboc3.png
删除之后,断点并未断下,那么这个call就不是我们想要的再次查找目标函数继续找另外一个地址,下内存写入断点 152121mko43ok2oo64demm.png
此时再次搜索返回地址,你会发现在压入返回地址前的一个参数中有一个完整的好友信息 152136ij1zjer5b03trjr2.png
这个call将一个完整的好友信息压入堆栈,那么说明这个call之前好友信息已经被查询出来了。我们需要继续往上找, 反汇编窗口跟随这个call 152147kibjpsh3m8822xii.png
在函数头部的位置下断点 152158jdam14aahdjbmhh7.png
等程序断下时在堆栈中找到返回地址 152210wp7wza5hwazawyca.png
然后在找到的上一层函数下断点,断下之后按F8单步步过,看看这个函数的作用是什么 152222shsrroznqc9ppf50.png
在这个call执行完毕之后,edi里面保存的就是好友的所有信息。那么说明这个call的作用就是查询当前好友的详细信息!成功定位获取好友信息的函数接着我们F7进入这个函数,看看好友的详细信息具体是从哪里个函数中查询出来的 152233vobwow5b5frb3pwl.png
单步到这里我们发现在进入临界区之后有一个函数,这个函数将微信ID的指针压入栈,我们F8步过函数查看一下返回值
152243l4ke1z1hw90hpw6f.png
此时eax里保存了当前好友的所有详细信息。通过参数和返回值也就可以猜到这个call的作用是通过微信ID获取详细信息。那么我们第一步就算是大功告成了。定位获取好友列表的函数我们重新载入微信,然后在找到的获取好友详细信息的函数下断点 152256ysif28lc8f1vz78v.png
登录微信,此时断点断下,接着按F8步过 152307cb9yg4na99fgbab4.png
此时eax寄存器中保存有联系人的数据,这个函数会调用多次,每调用一次查询一个好友信息。事实上获取好友列表的call不止这一个地方,但是这个地方拿到的数据是最多的。可以拿到所有的好友列表和群列表以及公众号函数已经找到了,那么我们只要写一个dll,注入到微信的进程空间中,利用Inline HOOK就能获取到所有的好友列表了示例代码部分示例代码如下:开始HOOK:

[C++] 纯文本查看 复制代码
]VOID StartHook(DWORD hookAdd, LPVOID jmpAdd)
{
        BYTE JmpCode[HOOK_LEN] = { 0 };

        JmpCode[0] = 0xE9;

        *(DWORD *)&JmpCode[1] = (DWORD)jmpAdd - hookAdd - HOOK_LEN;

        HANDLE hWHND = OpenProcess(PROCESS_ALL_ACCESS, NULL, GetCurrentProcessId());

        //备份数据
        if (ReadProcessMemory(hWHND, (LPVOID)hookAdd, backCode, HOOK_LEN, NULL) == 0) {
                MessageBox(NULL, "hook地址的数据读取失败", "读取失败", MB_OK);
                return;
        }

        if (WriteProcessMemory(hWHND, (LPVOID)hookAdd, JmpCode, HOOK_LEN, NULL) == 0) {
                MessageBox(NULL, "hook写入失败,函数替换失败", "错误", MB_OK);
                return;
        }

}

好友列表
[C++] 纯文本查看 复制代码
VOID insertUserLists(DWORD userData)
{
        DWORD wxidAdd = userData + 0x10;
        DWORD wxuserIDAdd = userData + 0x44;
        DWORD wxidV1Add = userData + 0x58;
        DWORD wxNickAdd = userData + 0x8C;
        DWORD headPicAdd = userData + 0x11C;
        //DWORD wxNickAdd = userData + 0x8C;

        wchar_t wxid[0x100] = {0};
        if ((LPVOID *)wxidAdd) {
                swprintf_s(wxid, L"%s", *((LPVOID *)wxidAdd));
        }

        wchar_t nick[0x100] = { 0 };
        if ((LPVOID *)wxNickAdd) {
                swprintf_s(nick, L"%s", *((LPVOID *)wxNickAdd));
        }

        wchar_t wxuserID[0x100] = { 0 };
        if ((LPVOID *)wxuserIDAdd) {
                swprintf_s(wxuserID, L"%s", *((LPVOID *)wxuserIDAdd));
        }

        if (oldWxid[0] == 0 && newWxid[0] == 0) {
                swprintf_s(newWxid, L"%s", *((LPVOID *)wxidAdd));
        }

        if (oldWxid[0] == 0 && newWxid[0] != 0) {
                swprintf_s(oldWxid, L"%s", newWxid);
                swprintf_s(newWxid, L"%s", *((LPVOID *)wxidAdd));
        }

        if (oldWxid[0] != 0 && newWxid[0] != 0) {
                swprintf_s(oldWxid, L"%s", newWxid);
                swprintf_s(newWxid, L"%s", *((LPVOID *)wxidAdd));
        }

        if (wcscmp(oldWxid,newWxid) != 0) {

                LVITEM item = { 0 };
                item.mask = LVIF_TEXT;

                item.iSubItem = 0;
                item.pszText = UnicodeToANSI(wxid);
                ListView_InsertItem(gHwndList, &item);
                ////wxuserID
                item.iSubItem = 1;
                item.pszText = UnicodeToANSI(wxuserID);
                ListView_SetItem(gHwndList, &item);

                item.iSubItem = 2;
                item.pszText = UnicodeToANSI(nick);
                ListView_SetItem(gHwndList, &item);
        }
}

实际效果 152325z8ky2x9x2a3kwdtx.png
预告最后,预告下一期,我的微信助手成品即将完成,现已完成大部分功能,再添加几个功能就全部完成了,届时将开放成品和所有源代码 152340wkfssz7d70ak4vn4.png

目前微信机器人的成品已经发布,需要代码请移步Github。还请亲们帮忙点个star
https://github.com/TonyChen56/WeChatRobot



评分

参与人数 25HB +21 THX +8 收起 理由
花盗睡鼠 + 2 + 1
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
Jawon + 2
一路走来不容易 + 1
消逝的过去 + 1
459121520 + 1
三月十六 + 1
boot + 1
曦照 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
风里去 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
车太震 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
l278785481 + 1
liugu0hai + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
ldljlzw + 1
xmwd123 + 1
szukodf + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
kpyg456 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
1072560919 + 1
我是好人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
brswbx201610 + 1
king51999 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
阿涛牛 + 1
成丰羽 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
XiaoWeiSec + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
棒棒糖417832 发表于 2022-2-4 10:54 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
树叶94673 发表于 2022-2-4 11:03 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
vDyxMg0629 发表于 2022-2-4 11:26 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
KsavJ 发表于 2022-2-4 11:27 | 显示全部楼层

回复,顶帖,赚币,谢谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
bsrBw 发表于 2022-2-4 11:38 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
MUt309 发表于 2022-2-4 11:39 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
GRdlFyoXp 发表于 2022-2-4 11:39 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Rrquk3 发表于 2022-2-4 11:52 | 显示全部楼层

支持一波~~
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
IKfTXCG95807 发表于 2022-2-4 11:53 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表