零、有啥用

网上大多数的微信逆向思路,是CE搜索数据得到地址,OD下访问断点,然后在堆栈里面大海捞针的找Call,效率太低了。

其实微信的界面是用Duilib做的,Duilib的界面布局写在XML文件。然后界面的消息处理,是通过控件名处理的。比如发送按钮,XML文件里面是"send_btn",代码里面是 if(xxx== “send_btn”)。利用这个特性,可以直接用字符串定位,省事很多。

一、资料

原版Duiib源码地址:https://github.com/duilib/duilib

微信Duilib源码地址:https://github.com/tencentyun/TIMSDK/tree/master/cross-platform/Windows/IMApp/Basic/duilib

二、界面创建流程

创建界面流程

窗口过程:CWindowWnd::__WndProc

消息处理函数:WindowImplBase::HandleMessage

处理创建窗口消息:WM_CREATE:    WindowImplBase::OnCreate

创建界面:CDialogBuilder::Create(加载界面) CDialogBuilder::Create(处理控件)

加载界面资源:CMarkup::Load CMarkup::LoadFromFile CMarkup::LoadFromMem

三、分析过程

1、切入点

WindowImplBase::OnCreate

MessageBox(NULL, _T(“加载资源文件失败”), _T(“Duilib”), MB_OK | MB_ICONERROR);

2、找偏移过程

IDA打开 WeChatWin.dll

搜索字符串 Duilib

参考源码备注

调用偏移 080D8C0

builder.Create 偏移 0x08199EA

F7进入,F8单步调试,发现乱码XML

再F7进入,F8单步调试,两次MultiByteToWideChar就得到xml

对应源码 这里是bool CMarkup::LoadFromMem

四、偏移记录

0FD7DC62    53              push ebx

0FD7DC63    6A 00           push 0x0

0FD7DC65    68 E9FD0000     push 0xFDE9

0FD7DC6A    FF15 B4A47510   call dword ptr ds:[<&KERNEL32.MultiByteT>; kernel32.MultiByteToWideChar

0FD7DC70    8B5D FC         mov ebx,dword ptr ss:[ebp-0x4]

0FD7DC73    33C9            xor ecx,ecx

Executable modules, item 6

Base=0F560000

Size=018A2000 (25829376.)

Entry=1023AA01 WeChatWi.

Name=WeChatWi

File version=2.8.0.121

Path=C:\Program Files (x86)\Tencent\WeChat\WeChatWin.dll

偏移 0FD7DC70 - 0F560000 =  81DC70‬

五、Hook代码

源码地址:https://github.com/KongKong20/WeChatPCHook

Dump微信PC端的界面Duilib文件相关推荐

  1. 微信PC端无法拖入文件

    问题:桌面文件或图片,无法拖入微信PC端,显示黑色圆圈禁止符号! 解决: 1.windows系统,按"WIN + R"出现"运行"对话框,然后在对话框中输入&q ...

  2. 微信PC端聊天界面表情包无法显示

    我试成功的一个办法,分享一下 具体步骤: 1.找到微信聊天界面的设置选项,如图 2.进入微信文件保存位置 3.进入WeChat Files/All Users/config目录 4.删除config. ...

  3. 调试微信 PC 端的内置浏览器界面

    2021-08-03 最新更新 好久没看,微信也更新了好几版.下面的方法并没有失效,不过上了 3.3.x 后的微信版本已经禁用了右键和查看 chrome://version 的功能了.进过实测,最后一 ...

  4. 微信 PC 端h5页面打开的内置浏览器开发者工具界面

    困境 项目开发的h5页面需要在微信端支持转发.分享功能,以及企业微信授权等相关权限功能,h5页面功能开发可以直接在Chrome浏览器的移动端模式开发,但是涉及微信权限时的一些功能,则需要在微信和企业微 ...

  5. 微信PC端各个数据库文件结构与功能简述 - Multi文件夹

    异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章仅在CSDN.掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是 ...

  6. 微信PC端数据库文件解密

    异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章仅在CSDN.掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是 ...

  7. 微信PC端技术研究(2)-拿下语音

    微信PC端技术研究-保存聊天语音 by anhkgg(公众号:汉客儿) 2019年1月31日 2.6.6.28 0x0. 前言 虽然一直知道CE,也用过一段时间,但一直用不好,可能太笨. 最近又学习了 ...

  8. 微信PC端技术研究(2)-保存聊天语音

    微信PC端技术研究-保存聊天语音 转载地址: [原创]微信PC端技术研究(2)-保存聊天语音-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pediy.com 0x0. 前言 最近又学习了某位大佬用 ...

  9. 使用微信PC端的截图dll库实现微信截图功能(C++ Builder实现)

    使用微信PC端的截图dll库实现微信截图功能(C++ Builder实现) 网上有很多文章说"使用微信PC端的截图dll库实现微信截图功能",我用node实现截图也要用一下,于是找 ...

最新文章

  1. photoshop 常见问题与分析
  2. 20个Flutter实例视频教程-第03节: 不规则底部工具栏制作-1
  3. Nuxt中如何使用Vuex-Store异步获取数据
  4. LeetCode 42. 接雨水(双指针、单调栈)
  5. 表现SOTA!DetCo算法:目标检测无监督对比学习
  6. 3-37Pytorch与torchvision
  7. 角速度求积分能得到欧拉角吗_高中物理竞赛典型例题精讲——中垂平面内电荷圆周运动角速度...
  8. 个人总结的【LaTeX】超高频特殊符号表(仅33个符号)+复杂公式速写解决方案,请查收!
  9. linux camera 存储,OpenCV调用摄像头录像并保存下来
  10. Metronome节拍器
  11. pygame小游戏——英语单词挑战
  12. Mac OS读写NTFS
  13. Eclipse的Debug调试技巧大全
  14. 绘制鱼骨图,卡壳了,找到了别人的文章,先好好学习理论知识。
  15. matlab regress
  16. R语言学习20150414
  17. 3D重建的进阶了解---深度图,网格,体素,点云是什么
  18. SQL基础培训25-SQL开发思路畅谈与开发规范
  19. HDOJ1495 非常可乐(bfs)
  20. php汉字转拼音百家姓版,Excel 将中文名改成拼音,并将姓氏放后面

热门文章

  1. Hugo - Markdown 换行处理
  2. centos7 mysql集群
  3. 开关磁阻电机悬浮驱动IR2128小结
  4. 毕业三年 ---精彩!
  5. 955不加班公司名单,2021年6月版本
  6. 老男孩GO语言线下培训班1期整套教程(完整18天含源码)
  7. NVIDIA显示设置不可以用,桌面右击选项卡没有显卡设置选项
  8. 使用Realsense测试aruco_ros包
  9. 加载mysql驱动的语句_sql数据库驱动加载语句
  10. i.MX6网卡驱动程序fec.c的分析(AR8035网卡驱动程序的详细分析)之一