PC微信逆向获取聊天表情

写在前面

PC微信版本:3.5.0.46
今天有个老哥提出需求,问我能不能把微信的表情包保存到本地,因为之前找到过未加密图片数据的Hook点,本来以为差不多的,然而并不是,所以有了这篇文章。

思路

首先还是在接收消息的地方下断,发一个表情,查看消息内容,把xml数据拷贝出来,看看都用到了哪些属性,然后在OD里右键-查找-查找所有字串,搜索某个属性,把push这些属性的指令都下断。
然后再发一个表情消息,会在某个push属性的地方断下,取消掉之前所有的断点,再BP CreateFileW,然后一直运行直到CreateFileW的路径包含CustomEmotion,此时记下文件句柄(eax),取消CreateFileW的断点。

接着BP WriteFile,运行,直到句柄与刚才的句柄一致,此时查看堆栈窗口的文件buffer,发现开头的字符是5631xxxx,与之前保存的表情包文件头一致,那毫无疑问此处是加密数据了。

如果是跟图片一样使用异或加密,那跟图片走同样的函数就行了,肯定有差别,往上追溯也没有发现加密过程,一度怀疑人生。

后来发现不同的表情包,头部信息是一样的,转换为ASCII字符是V1MMWX,遂百度,这下就能找到资料了,不过年代较为久远,还有一些是小程序解密的,里面提到,除头部6个字节外,后面1024个字节使用RSA加密,剩下的部分使用异或加密,研究RSA解密还是算了吧。

后来在文本字串里搜索V1MMWX,还真有一个地方push了,于是下断,再次发送表情包,成功断下,这时微信的消息提示已经触发,可以看到任务栏的高亮,所以,此处应该是微信在解密表情包,然后加载到聊天界面(只是猜测)。

下拉查看堆栈,看到一些Gif开头的ASCII字符,一开始没想明白是什么,数据窗口跟随,发现就是原始数据,在表情包内容指针下面跟了一个表情包大小,很好,找找附近的返回,定位到CALL下断,得到以下内容:

Executable modules, 条目 132
 基址=5D5B0000
 大小=02624000 (39993344.)
 入口=5EADC59D WeChatWi.<模块入口点>
 名称=WeChatWi
 文件版本=3.5.0.46
 路径=D:\Tencent\WeChat\[3.5.0.46]\WeChatWin.dll

5D9A2E83    E8 885A0000     call    5D9A8910                         ; 表情位置:eax,大小:eax+4

不过这个地方有个缺点,重复的表情包不会再触发,应该是在某个地方触发了jmp,往上追,一直找到子线程调用,也没有发现那个jmp语句,索性不找了,把之前本地保存的加密表情全删了就行。

写在后面

HOOK的代码就不放了,据说TX在大规模封号,有需要自行研究吧。如果需要图文教程就留言,我抽空再写写,没有人看就不费劲了。

免责声明

文章仅供交流学习使用,请不要侵害表情包作者版权,如因此产生法律纠纷,与本人无关。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
微信PC逆向获取小程序源码是指通过逆向工程的方法,对微信PC版进行分析和研究,以获取小程序的源码。 首先,逆向工程是对软件进行反向分析的过程,通过分析软件的二进制代码、反编译和调试,以获取软件的内部实现和源码。 要逆向获取小程序源码,我们首先需要通过一些工具和技术手段对微信PC版进行逆向分析。这可能涉及使用反编译工具、调试器和逆向工程技术等。 通过逆向分析微信PC版,我们可以获取到小程序在PC端的运行环境和相关的源码信息。可以分析小程序的请求和响应数据,了解小程序的工作原理以及和微信PC版的交互过程。 然后,我们可以对获取到的源码进行分析和研究。通过阅读源码,可以了解小程序的业务逻辑、界面设计、数据交互等方面的实现细节。这有助于我们更深入地理解小程序的运行机制,并为后续的开发和优化提供参考。 需要注意的是,逆向获取小程序源码存在法律和道德风险。对于商业小程序来说,它们的源码是开发者的知识产权,未经许可获取源码可能侵犯了知识产权法。此外,在逆向工程过程中,可能会对软件的安全性进行攻击或者破坏,这也是不被允许的行为。 因此,在合法和道德的前提下,如果我们需要获取小程序的源码,应该通过与开发者合作、遵守开发者协议等方式来获取。这样不仅可以保证合法性和安全性,还能与开发者建立良好的合作关系,促进行业的良性发展。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值