图片句柄_PC微信逆向:自动保存加密的聊天图片
前言
本文基于anhkgg大佬的文章《微信PC端技术研究(2)-拿下语音》原文链接:https://bbs.pediy.com/thread-249274.htm
anhkgg大佬的这篇文章找到了保存语音消息的接口,这里直接给出相关特征码,方便定位(我使用的微信版本依旧是2.6.8.52)
偏移为0x30E326,下面的特征码
![](/assets/blank.gif)
基于保存语音的相关延伸
其实这个地方不单单有语音消息,还有图片消息,当我们发送一条图片消息时
![](/assets/blank.gif)
[edi+0x30]的内容里面保存有这一次发送图片的相关数据,包括微信ID等一系列原始的数据。我们当然可以在这个地方写HOOK来保存图片,但是没有必要。因为这里的消息内容过多,处理起来相对会比较麻烦。
图片处理的相关流程
既然这个地方是最原始的消息内容,那么后面肯定会对消息进行相关处理。而且我们已经知道微信的接收的图片会用异或加密的方式保存到本地。那么我们不妨猜测一下图片相关的处理流程。
首先接收到原始的消息后,会对消息进行一系列的处理,其中就包括判断消息是否是图片。那么如果是图片则会取出图片数据,然后在内存中对图片进行加密。加密完成之后调用文件操作的API,写入加密后的图片到本地。
整个过程如图所示:
![](/assets/blank.gif)
自动保存图片相关思路
既然了解图片处理的流程,而且已经有了接收图片消息的call,那么我们就可以在接收到图片消息之后,在CreateFileW创建图片之前,找到对图片进行加密的算法和函数,将未加密前的图片保存出来。
实战保存聊天图片
![](/assets/blank.gif)
在OD中找到保存语音的call,发送图片消息让程序断下的同时,对CreateFileW进行下断。之后F9运行
![](/assets/blank.gif)
此时文件路径为xlog,这个明显不符合我们的要求,继续F9运行
![](/assets/blank.gif)
一直找到图片路径带有Image关键字时,在创建图片
![](/assets/blank.gif)
此时我们点击K显示堆栈,找到第一层返回地址,右键显示调用
![](/assets/blank.gif)
当微信运行到这里的时候,图片加密已经完成,我们要在这个函数之前找到图片的加密算法,其实就在上面一点点的位置,鼠标稍微往上翻一下就能看到
![](/assets/blank.gif)
找到这个地方之后清除剩下的所有的断点,只保留这一个
对保存图片call的相关分析
再次发送一张图片,程序断下。这段代码首先用循环的方式对图片进行加密,循环的次数即ecx的值,也就是图片的大小。其中有两个数据比较重要。
![](/assets/blank.gif)
我们先在内存中查看[ebp-0x14]的内容,想要知道这段数据是什么其实很简单。先下CreateFileW断点
![](/assets/blank.gif)
当CreateFileW断点断下后,执行到返回,查看打开的文件句柄
![](/assets/blank.gif)
此时打开的图片句柄为0xF80,此时再下WriteFile断点
![](/assets/blank.gif)
WriteFile断下后可以看到句柄为F80,写入的缓冲区地址为39FE820,而[ebp-0x14]的地址正好也是39FE820。也就是说[ebp-0x14]这个位置保存的是加密后的图片数据
回到之前的断点,再次发送一张图片,查看[ebp-0x4]的数据
![](/assets/blank.gif)
此时[ebp-0x4]中保存了接收的图片,而ecx保存了图片的大小
![](/assets/blank.gif)
![](/assets/blank.gif)
这里借用PCHunter查看->进程内存,将这一段数据dump下来
![](/assets/blank.gif)
问题就在于这里只是一张大小为4KB的缩略图,回到OD,再次按F9运行
![](/assets/blank.gif)
断点断下,但是此时ecx的值变成0x5A140
![](/assets/blank.gif)
用同样的方法dump下内存,大小为360KB,这个就是我们需要的原图了。
也就是说这个地方会端下来两次,第一次是缩略图,第二次才是我们要的原图。
代码实现保存聊天图片
示例代码如下:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
实际效果
![](/assets/blank.gif)
原文链接:https://blog.csdn.net/qq_38474570/article/details/101755586
图片句柄_PC微信逆向:自动保存加密的聊天图片相关推荐
- PC微信逆向:实现自动保存加密的聊天图片
文章目录 前言 基于保存语音的相关延伸 图片处理的相关流程 自动保存图片相关思路 实战保存聊天图片 对保存图片call的相关分析 代码实现保存聊天图片 实际效果 项目地址 前言 本文基于anhkgg大 ...
- 电脑微信关闭自动保存_微信自动保存图片怎么关闭
微信手机版2017v6.5.4 官网最新版 类型:社交聊天大小:38.7M语言:中文 评分:9.3 标签: 立即下载 微信是很多人手机上使用最频繁的一个app,因此很多时候,手机内存不够用,第一件事就 ...
- 电脑微信关闭自动保存_微信自动保存图片功能怎么取消掉 微信自动保存图片关闭设置方法...
微信是大家在手机上使用最频繁的一个app应用,而大多时候,手机内存不够用,第一件事就是清理微信占用内存了.其实微信用户只需要在使用微信时将微信自动保存图片关闭就能够省下大量内存了,那么微信自动保存图片 ...
- 电脑微信关闭自动保存_微信自动保存图片怎么关闭?微信自动保存图片在哪关?...
微信是很多人手机上使用最频繁的一个app,因此很多时候,手机内存不够用,第一件事就是清理微信占用内存.其实微信用户只要在使用微信的时候将微信自动保存图片关闭就可以省下不少内存了,那么微信自动保存图片怎 ...
- 微信小程序保存canvas绘制的图片到本地,拒绝图片授权后继续授权
authorizeSaveImg() { //重新授权相册const that = this;wx.getSetting({success(res) {// 第一,直接调取保存,系统会自动调取授权if ...
- 小觅相机自带的SDK改成自动保存点云、图片、和深度图代码
首先,我用的是小觅提供的SDK,我使用的是WindowsEXE版本的 版本号:mynteye-d-1.8.0-win-x64-opencv-3.4.3.exe 不同的版本可能工程名字不一样 https ...
- 各种抠图动态图片_不用手。自动、智能抠图,图片去背景
BgEraser 是一款基于 AI 的自动.智能图片去背景工具,无需勾选可用.可删除区域,上传图片,立即下载即扣图完成的图片.@Appinn BgEraser 真是懒人的福音. 在此之前,比如很好用的 ...
- php获取微信图片访问权限,微信小程序访问图片出现403,图片防盗链的解决办法...
在写小程序的时候,访问一个网址获取图片,但是显示会出现403(防止盗链)的错误. 总结了一下,有两种方法是可以解决这个问题的:使用images.weserv.nl方案 使用no-referrer方案 ...
- 微信撤回服务器保存吗,收藏!微信消息被撤回?闪照无法保存?这样一步完美解决...
原标题:收藏!微信消息被撤回?闪照无法保存?这样一步完美解决 微信消息被撤回?闪照无法保存?一步设置完美解决! 自微信推出撤回功能,对一些好奇心很强的朋友简直是一种折磨.就在昨天笔者收到的一条重要的消 ...
最新文章
- springcloud项目打包_SpringCloud 快速入门
- win7+jdk环境变量配置
- 演示:配置日志发送到VTY虚拟终端线路
- CactiEZ V10.1 中文版 Cacti中文解决方案+使用教程(1)
- 如何选择适合自己的CMS建站系统
- js 利用事件委托解决mousedown中的click
- 规则管理平台系列(二)
- tomcat 8启动很慢解决方式
- javabean实体类对象转为Map类型对象的方法
- 最难的几道Java面试题,看看你跪在第几个?
- gogs 把用户加入项目
- CorelDRAWX4的VBA插件开发(三)VBA的必用基础知识
- 制作照片边框 初学者 ps
- vuex报错TypeError: sub is not a function
- linux内核源码分析之proc文件系统(三)
- syntax error, expect ')' 数据库报错批量插入
- ANR发生的原理是什么, 怎么排查
- 软件项目管理实践经验谈
- sql语句语法数据定义语句alter table
- 9个最佳的大数据处理编程语言
热门文章
- Java @SuppressWarnings注解
- java - 人员分配组合
- java实现日期让随动变_java工具类(四)之实现日期随意跳转
- 山东大学 2020级数据库系统 实验一
- 用html编写一幅简单的画,使用html5画简单的折线图
- 支持国产处理器仿真的全数字实时仿真平台SkyEye与可信编译器L2C的核心翻译步骤
- 国产主可控的嵌入式仿真测试软件SkyEye与可信编译器L2C的核心翻译介绍
- 共阳数码管段码表_简单共阴极数码管电路图大全
- mysql5.7配置用户名密码_MySQL57安装图解
- MySQL 8.0开始Group by不再排序