之前[原创]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
[原创]2025企业微信4.1.36.6011使用内联汇编导出所有的界面XML文件
138 浏览
21 回复
谢谢如此好的分析
MiaoWoo
这个我之前找到过 然后消息内容的引用地址也找到过 好像固定在 0019F114 但是直接改这个内容好像没用 感觉是赋值给某个对象 然后传递到发送线程了 之前根据 sqlite 去追踪 数据库执行的SQ ...
他参数全是对象,向上分析,去找pb构造,即可构造出参数拉~
这个我之前找到过 然后消息内容的引用地址也找到过 好像固定在 0019F114 但是直接改这个内容好像没用 感觉是赋值给某个对象 然后传递到发送线程了 之前根据 sqlite 去追踪 数据库执行的SQ ...
他参数全是对象,向上分析,去找pb构造,即可构造出参数拉~
m
FANTASYING
ida搜 presendnewmessage 即可定位到发消息
这个我之前找到过 然后消息内容的引用地址也找到过 好像固定在 0019F114 但是直接改这个内容好像没用 感觉是赋值给某个对象 然后传递到发送线程了 之前根据 sqlite 去追踪 数据库执行的SQL 倒是找出来了 不过还是没啥头绪 怎么构造发送的消息体
ida搜 presendnewmessage 即可定位到发消息
这个我之前找到过 然后消息内容的引用地址也找到过 好像固定在 0019F114 但是直接改这个内容好像没用 感觉是赋值给某个对象 然后传递到发送线程了 之前根据 sqlite 去追踪 数据库执行的SQL 倒是找出来了 不过还是没啥头绪 怎么构造发送的消息体
厉害大佬
不错啊