首页 > 其他分享 >逆向WeChat (二)

逆向WeChat (二)

时间:2024-05-17 20:19:30浏览次数:20  
标签:逆向 duilib WeChat https UI com

 本篇在博客园的地址https://www.cnblogs.com/bbqzsl/p/18187099

回顾一下现时网上的资源。

原生 https://github.com/duilib,

Ultimate https://github.com/qdtroy/DuiLib_Ultimate

腾讯 https://github.com/tencentyun/TIMSDK/tree/master/cross-platform/Windows/IMApp/Basic/duilib

网易 https://github.com/netease-im/NIM_Duilib_Framework/tree/master/duilib

主体框架2019年截止。

腾讯cross-platform/Windows/IMApp/Basic/duilib止于2019年开放的5.4.666版的TIMSDK。只能通过tag切换旧旧旧版。

最后一个开放的5.6.12版在路径Windows/Demo/Basic/duilib,时间止于2021年8月31日。

网易开源版也止于2019年。

比较了一下,网易版对原生 改动很大,去除了CDuiString,全部用std::wstring。腾讯在TIMSDK的版本是基于DuiLib_Ultimate而不是原生的duilib。根据我逆向的CControlUI结构,现在WeChat使用的duilib是基于原生版的。DuiLib_Ultimate与原生两个版区别的最大特征在于,CControlUI结构使用了5个EventSource还是7个EventSource。

通过WeChat的日志跟踪路径,WeChat不与其它产品共享代码,他们有一个专门子项目WeUIEngine,而非TIMSDK。架构应该可以参考网易的NIM_Duilib_Framework框架。注意是框架设计不是代码。

WeChat版的duilib,改动CControlUI成一个大而累赘的庞物,从CContainerUI的RTTI信息可以看到,CControlUI是一个2816字节的大基类。CDuiString的确是一个累赘,尤其Unicode下,大小是132字节。而且这个基类一共使用了17个CDuiString。大厂的我不懂。后面的继承类如CLabelUI就更加趋向于使用std::wstring。反正现在的电脑没有16GB内存都不算电脑。

 

经过逆向后就可以对UI进行操作了。

 

 

WeChat使用了Chromium::base的MessagePumpForUI,简单来说就相当于用win32有窗口消息实现仿如iOS的dispatcher, 如我们熟悉的这个调用dispatch_async(dispatch_get_main_queue(), ^{ // update UI })。Chromium这项目,每个版本系列的代码都不同程序的重构,所以可以通过一些类来确认出WeChat所使用的版本是6系列的。也可以推断出WeUIEngine开发的年份。现在这年,Chromium或cef的多线程任务框架也应该是用到烂大街的了吧。

有这个东西,就等于方便我使用,于是我就不客气使用它向UI主线程投递代码执行。进行测试,运行MessageBox显示当前线程的ID。所以我已经先逆向了需要的东西。下面演示一下。

it works。消息框在主线程376中执行了。

那么WeChat是怎么用它的呢,我原本以为WeChat会用它大作为一下,我的意思是有多一点用途,没想到却只是为了完成一个单一的UI功能,动画,或者说是动画的计时器。

先来找出dispatch任务的地方,只要跟踪这里,就可是知道WeChat都向这里Post了些什么代码。无它,将DebugBreak作为任务PostTask到MessagePumpForUI。通过调用栈就可以找出来了。再通过逆向分析出绑定的执行地址。

绑定的执行地址是base::RepeatingTimer,全部都只有定时任务。下面再来逆向分析都是些什么定时任务。我也想知道刷新扫码,工作线程有没有使用MessagePumpForUI将请求结果更新到UI。

定时器任务只有一个, 就是CPaintManagerUI::DelayPaint,名字是我起的,功能就是Paint,目的是动画,还有增加或减少Paint的频度。即使我刷新了几次重新扫码,也没有收到别的任务。也就是工作线程没有通过Chromium::base的任务框架进行dispatch_async(ui_update)。

今期先到这里。

我还有逆向通达信系列

标签:逆向,duilib,WeChat,https,UI,com
From: https://www.cnblogs.com/bbqzsl/p/18187099

相关文章

  • python 逆向
    python逆向也是CTFreverse的一个重要组成部分(废话)。题目一般会给一个exe文件或者pyc文件。工具工欲善其事,必先利其器,好的工具是必不可少的。exe转pyc工具:GitHub-WithSecureLabs/python-exe-unpacker:AhelperscriptforunpackinganddecompilingEXEsco......
  • 逆向 | 驱动IRP通信模板
    逆向|驱动IRP通信模板踩了很多坑,比如说IoCreateDevice以后要删除,符号链接也要在卸载的时候删除啥的。反正存个模板在这儿下次就能套了:#include<ntddk.h>#include<stdio.h>#include<stdlib.h>//0-2047是保留的,可以用2048-4095#defineOPER1CTL_CODE(FILE_DEVICE_UN......
  • 【iOS逆向与安全】iOS远程大师:通过H5后台远程查看和协助iPhone设备
    前言在移动设备测试和远程协助的过程中,能够远程查看和协助iPhone设备是一项非常实用的功能。为了解决这一需求,我开发了一款名为iOS远程大师的产品,允许用户通过H5后台界面查看和协助越狱或非越狱的iPhone设备。本文将详细介绍iOS远程大师的开发过程和技术实现。一、技术实现整......
  • NSSCTF round#22逆向
    NSSCTFround#22逆向1.wp要及时写不然忘光光2.赛题分文件夹放ezcrypt下载下来是python打包的exe,解包出pyc用pycdc反编译看一下嗯不认识BEFORE_WITH命令。丢到gpt4o里看看还蛮准确的,和作者提供的源码一样。不过对填充的处理不对,原程序是填充'\x00'。不过比自己硬看好太多......
  • 某东h5st 3.x-4.x 本篇web端4.7的生成方式和逆向分享
    前言本文中所有的内容仅供学习交流,禁止非法用途和商业行为。产生的一切后果与本作者无关。如有雷同纯属巧合4.7较前面的版本改动稍大,通过异步的方式生成了h5st。这个了解过的应该都可以看出来分析一、抓包确定逆向参数:20240511183735521;n9nymytm9nzgi560;f06cc;tk03wd2f......
  • 瑞数4代逆向学习
    声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作......
  • 逆向学习-我心脏又不长在正中央
    附件运行后需要输入字符串获取flag 无壳直接IDA分析,先搜一下flag字符串 可以找到flag,但直接提交结果不对,找flag所在函数位置继续分析 F5反汇编sub_401000()函数sub_401070函数 通过分析,在sub_401070函数中把输入的字符(this数组)经过异或运算,看最终v2+v1==3是否成......
  • 逆向学习-证明自己吧
     PeiD查看一下,无壳IDA打开静态分析,提示key就是输入的值 F5反汇编看下伪代码,发现sub_401060函数是逻辑判断的关键  可以看到想要正确返回有2个条件,但第一个条件只是把v5变成空值,但并不能得到什么内容跟输入的值有关,还是要看第二个条件看下整个函数注意运输逻辑1.首先......
  • 易盾逆向分析-知乎login
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!目标网站aHR0cHM6Ly93d3cuemhpaHUuY29tL3NpZ25pbj9uZXh0PSUyRg==分析逆向流程先login,从堆栈中找到vm......
  • 【安卓逆向】迷谷音乐的音乐接口分析
    闲来无事,逆向一下音乐软件吧软件挂上Justtrustme模块,charles代理挂上,开始搜索,抓包不是哥们,歌曲url摆我脸上,加密都不加密一下的吗,直接python开梭importrequestsimporttimetimestamp=int(time.time()*1000)url="http://app.c.nf.migu.cn/MIGUM2.0/strategy/listen......