论坛首页 安全工具分享区 阅读主题

[原创]2025企业微信4.1.36.6011使用内联汇编导出所有的界面XML文件

138 浏览 21 回复
#1 楼主 2026-06-01 21:08:48
之前[原创]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
#17 2026-06-01 21:08:48
谢谢如此好的分析
#18 2026-06-01 21:08:48
MiaoWoo


这个我之前找到过 然后消息内容的引用地址也找到过 好像固定在 0019F114 但是直接改这个内容好像没用 感觉是赋值给某个对象 然后传递到发送线程了 之前根据 sqlite 去追踪 数据库执行的SQ ...

他参数全是对象,向上分析,去找pb构造,即可构造出参数拉~
#19 2026-06-01 21:08:48
m
#20 2026-06-01 21:08:48
FANTASYING


ida搜 presendnewmessage 即可定位到发消息

这个我之前找到过 然后消息内容的引用地址也找到过 好像固定在 0019F114 但是直接改这个内容好像没用 感觉是赋值给某个对象 然后传递到发送线程了 之前根据 sqlite 去追踪 数据库执行的SQL 倒是找出来了 不过还是没啥头绪 怎么构造发送的消息体
#21 2026-06-01 21:08:48
厉害大佬
#22 2026-06-01 21:08:48
不错啊
‹ 上一页 1 2 下一页 ›

请登录后参与讨论

立即登录 注册账号