KongKong20 发表于 2020-5-11 18:03

DumpXXPC端的界面Duilib文件

本帖最后由 KongKong20 于 2020-5-29 20:16 编辑

零、有啥用
网上大多数的微信逆向思路,是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
参考源码备注
https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1NDT1ZFNXdkWE9RamNCd3QucG5nIXRodW1ibmFpbA?x-oss-process=image/format,png
调用偏移 080D8C0
builder.Create 偏移 0x08199EA
https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1pGZTZJNmprQVFrYmxQSWsucG5nIXRodW1ibmFpbA?x-oss-process=image/format,png
F7进入,F8单步调试,发现乱码XML
https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2d3REh1NVdjOGNzVVY4d08ucG5nIXRodW1ibmFpbA?x-oss-process=image/format,png
再F7进入,F8单步调试,两次MultiByteToWideChar就得到xml
https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2lVbk56eUJNd05BWmVnQkkucG5nIXRodW1ibmFpbA?x-oss-process=image/format,png
对应源码 这里是bool CMarkup::LoadFromMem
https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2NmaEh4VVZ0bGtVaHcxQlQucG5nIXRodW1ibmFpbA?x-oss-process=image/format,png
四、偏移记录
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:
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‬

benny856694 发表于 2020-5-11 22:24

不错的思路

luli1111 发表于 2020-5-12 07:04

大王品美人 发表于 2020-5-12 12:29

效率的差异,源于思路的差别

xiaohong 发表于 2020-5-16 10:46

支持一下,感谢分享

Hmily 发表于 2020-5-21 23:36

@KongKong20 论坛禁止留群等联系方式,外链里的处理下吧。

hua111 发表于 2020-5-24 10:11

KongKong20 发表于 2020-5-29 20:18

Hmily 发表于 2020-5-21 23:36
@KongKong20 论坛禁止留群等联系方式,外链里的处理下吧。

所有文章都删链接了
页: [1]
查看完整版本: DumpXXPC端的界面Duilib文件