首页
社区
课程
招聘
[原创]Dump微信PC端的界面Duilib文件
发表于: 2020-5-11 18:02 16327

[原创]Dump微信PC端的界面Duilib文件

2020-5-11 18:02
16327

网上大多数的微信逆向思路,是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

WindowImplBase::OnCreate

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

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


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-5-12 10:06 被KongKong20编辑 ,原因: 调整格式
收藏
免费 6
支持
分享
最新回复 (10)
雪    币: 29
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
666
2020-5-11 23:37
0
雪    币: 181
活跃值: (621)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
网上的 C++逆向分析连IDA都不用,更别谈C++了,上来就是一手,我们先用CE搜XXXX,然后下断。然后这个call
2020-5-12 11:06
0
雪    币: 6524
活跃值: (4316)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
4
柒雪天尚 网上的 C++逆向分析连IDA都不用,更别谈C++了,上来就是一手,我们先用CE搜XXXX,然后下断。然后这个call
逆向分析 和 c++别扯一起。
ida只是静态分析工具,这样的工具还有很多。
楼主说的CE OD 一样也可以用其它的代替。
2020-5-12 15:20
0
雪    币: 181
活跃值: (621)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
yimingqpa 逆向分析 和 c++别扯一起。 ida只是静态分析工具,这样的工具还有很多。 楼主说的CE OD 一样也可以用其它的代替。
C程序的代码大抵上和C++分析出来的结构,不相同的还是有很多。做分析又不是为了单纯找数据,
2020-5-12 18:29
0
雪    币: 238
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
nice,谢谢分享,又学到了一招~
我尝试写段OD脚本来dump,在您说的 xor ecx,ecx 处下段,xml的内容确实是直接用dm命令dump下来了,
想再请教下,在这时候怎么读到正确文件名?我在堆栈只找到了文件名 xxx/xxxx.xml ,没找到其长度存在哪。





2020-5-21 21:23
0
雪    币: 3221
活跃值: (3031)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
零下八度 nice,谢谢分享,又学到了一招~ 我尝试写段OD脚本来dump,在您说的 xor ecx,ecx 处下段,xml的内容确实是直接用dm命令dump下来了, 想再请教下,在这时候怎么读到正确文件名 ...
可以参考下我给出的源码,里面都有的
2020-5-25 10:34
0
雪    币: 9
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
有个问题,我把奇游的xml给拿到了,但是我在字符串下断,只有初始化时才断到,怎么解决,谢谢了
2023-7-16 19:19
0
雪    币: 2969
活跃值: (30851)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
感谢分享
2023-7-17 10:01
1
雪    币: 980
活跃值: (1308)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
解决问题的角度不一样,思路一下就开阔了,原来用CE找串的方式就显的有点低级了,每升级一次版本就有可能得改一次
2023-7-25 10:00
0
雪    币: 15
活跃值: (207)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
楼主你联系方式多少
2024-2-7 13:34
0
游客
登录 | 注册 方可回帖
返回
//