-
-
[推荐][原创][分享]取出PC WeChat的语音数据
-
发表于:
2020-7-9 23:54
3835
-
[推荐][原创][分享]取出PC WeChat的语音数据
取出PC WeChat的语音数据
事情是这样子的,和师傅约定一个季度一篇精华帖子来巩固自己的修为,我也坚信自己有一天能成为斗帝强者,踏空而行。
废话不多说,接下来分享一下子今天分析wechat语音的过程吧。
首先,我算是比较了解wechat了,所以猜测wechat语音过来是一个xml的数据,会进入消息分发函数(doAddMsg),给另一个线程分发任务,然后进行下载(其实后来才知道猜测的是错误的),所以直接ida搜索doAddMsg这个消息分发函数。
分析整个函数 ,上面是一些字符串处理,生成路径,处理结构体的一些函数。
而这个switch 是消息分发函数,到界面的一些分支 ,所以在这里OD下一个断点。
因为switch 语句在od里面分析个人感觉很恶心,所以我习惯直接单步一下,再到ida看是哪个分支。
上面的 case 0x22 的分支 , 那么 这个分支也就只有两个函数 ,想都不用想 点进第二个函数看一眼 。
进去以后 ,一个又靓又显眼的 VoiceMgr::processSyncMsg 出来了 ,那么基本可以确定他是分发下载语音任务的函数(其实语音本身就在这里)
到了这一步 ,因为我的猜测思路是错误的,ida分析经验也不足,来来回回走了很多弯路,各种搜索 voice 无奈之下只能再回来看看
我的习惯是先跟进去看看都有什么重要的数据。参考ida 进来会有两个分支 ,看他走哪一个 。
跟下来以后 10DE06C0这个函数 三个参数 V8 是一个this , v11 和v47是两个重要的参数
栈上两个参数分别是 ,语音数据 ,和 语音长度 ,那么这个语音是哪里来的呢? 是xml过来以后又下载了一遍吗?
如果是下载就需要找一找他的下载函数了。
那就只能看看伪代码 v11 的来源 他的来源就在上面不远处 也就是 v9 +4的位置 ,再看v9 , 是v6 +32 得来的 ,那么就再往上看 v6 = a2 也就是 这个语音是参数传进来的。
那就继续跟上层函数
第二个参数 v215 = v330 这样看可能不太明显 ,转成汇编看
也就是说 语音也在 doAddMsg的上层 ,然后我就这样找啊找啊找 , 发现当这个xml消息过来的时候,最上面的分支 ,语音消息也就存在了 。所以当收到语音的时候 ,xml的消息会和语音消息一起发过来 ,接下来可以直接随便找一个点hook拿到这条语音消息。然后写出一个.silk,那么这条消息就可以直接拿到啦。。。。。
拿到的数据也就是它 2477的长度。
因为还在学习中,只能发这些小白贴了 。希望可以拿到我人生第一封精华。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2020-11-4 19:26
被逃避不能对付一切编辑
,原因: