牛掰!把微信表情包导出GIF文件
通过配置过滤器,只筛选进程名中包含 wechat字样的进程,过滤出微信进程的所有文件访问行为:
这时,找到我们想要获取的表情包文件,点击发送(发送给谁都行,这里测试方便就发给了自己的文件传输助手)
随后在ProcMon中停止监控,可以看到它捕获了刚才这一操作过程中,微信进程所有的文件相关的操作记录。
往下翻,可以看到最近的对一个文件的多次读写,并且从这个文件的路径可以猜测出,这个是用户自定义(CustomEmotion)的表情包:
打开这个路径所在的文件夹,可以看到目标文件:
就是你了!
咱们给它添加一个 .gif的扩展名,打开看看是不是刚才那个表情包。
糟糕,好像打开失败了!难道这不是GIF文件?用十六进制编辑器打开看看这文件神马格式!
V1MMWX?这是什么格式的标记?小白纵横江湖多年,也没见过这种格式的文件。
接下来看了一下同目录下的其他文件,全都是以这个标记开头的。
额~~ 微信看来是对表情包文件加密了!
这样不难理解,现在都有不少微信表情包作者通过制作表情包赚钱了,这些表情包图片作为知识产权,做一些安全保护自然理所应当。
但是有些图片明明就不是付费表情包,也给加密,这可不行,得想个办法解密!
破解加密文件
根据ProMon监控记录中的调用堆栈信息,可以追溯到读取表情包的位置:
在IDA中打开分析目标模块WeChatWin.dll文件,发现了几处图片文件解密的调用:
这几个函数位于另一个模块VoipEngine中,在调试器WinDbg中给它们都打上断点,再次发送表情包文件触发断点,发现是isWxGF函数命中,查看堆栈,发现了文件明文!
使用windbg的内存dump命令,将数据dump到磁盘上,查看:
.writemem f:emj.gif 0x128352b8 L 0x1073f
果然就是之前的那个表情包!
有了明文,问题就好办了!编写一个DLL来实现将内存中的明文文件自动dump到磁盘上!
获取VoipEngine加载地址
获取其导出函数isWxGF函数地址
HOOK这个函数
在HOOK函数中读取堆栈参数,将明文内容写入到磁盘文件中
最后,将DLL注入到微信进程中!完事儿
获取VoipEngine加载地址
获取其导出函数isWxGF函数地址
HOOK这个函数
在HOOK函数中读取堆栈参数,将明文内容写入到磁盘文件中
最后,将DLL注入到微信进程中!完事儿
注意: