之前[原创]2025企业微信4.1.36.6011调试Duilib获取界面XML实现了在调试器里面获取 XML
但是很不方便 毕竟企业微信的文件太多了 一个一个手动处理不现实
经过几天的学习 学会了用 inline hook(内联汇编) 修改指令 直接内容到文件里按照上次文章的方法 找到 CDialogBuilder::LoadContent 方法所在的地方
往上几行 有一个 LoadXml 方法 入参是文件名称 出参是文件内容
正好都是我们要的数据 我们可以替换这个指令这里贴一下原始的字节码 我们需要修改的就是 E8 F724F8FF 这个 call <duilib.public 指令然后找个AI写一个 inline hook 的模板代码 稍微修改一下这里讲一下几个地址的获取方法找到对应地址 然后右键 复制 选中 RVA(相对虚拟地址)
原始地址 选中那个 call 然后 双击一下 就可以跳到对应的地址 然后复制一下 RVA
这里原始地址也可以直接代码读取然后写入 暂时不会 就先手写了在 DLL 的 DLL_PROCESS_ATTACH 部分执行一下 inline_hook然后我们生成一下 DLL 注入一下 看看效果
可以看到 E8 F724F8FF 被替换成了 E9 376DB8F6先写一个裸函数 然后用字节码保存一下相关的指针地址 然后执行保存的方法 然后跳回去!!!注意!!!
!!!注意!!!
!!!注意!!!
这里 x32dbg 要打开一下 入口断点 不然等启动后注入 会缺一部分文件
用 x32dbg 启动企业微信 然后在入口断点停下 然后注入 dll可以看一下 ret_hook 的汇编代码然后按 F9 继续运行 去目录下面看一下 会生成很多文件
项目属性 C++20标准 不使用预编译头 Unicode 字符集最近一直在整收发消息 然后发现企业微信是多线程的暂时还没搞清楚具体怎么实现的 大概可以找到是哪里发出去和哪里收回来的
但是栈上面找不到具体的消息内容 只能找到用户ID
我猜可能是传递了对象 所以找不到
希望大佬们可以指点一下70027863 | 50 | push eax
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-286562.htm