图片句柄_PC微信逆向:自动保存加密的聊天图片

前言

本文基于anhkgg大佬的文章《微信PC端技术研究(2)-拿下语音》原文链接:https://bbs.pediy.com/thread-249274.htm

anhkgg大佬的这篇文章找到了保存语音消息的接口,这里直接给出相关特征码,方便定位(我使用的微信版本依旧是2.6.8.52)

偏移为0x30E326,下面的特征码

7e7aa323a3c01935eac05e1e5eb5cad9.png

基于保存语音的相关延伸

其实这个地方不单单有语音消息,还有图片消息,当我们发送一条图片消息时

61c8a401d5c65aff0945f1cdbec0fbdc.png

[edi+0x30]的内容里面保存有这一次发送图片的相关数据,包括微信ID等一系列原始的数据。我们当然可以在这个地方写HOOK来保存图片,但是没有必要。因为这里的消息内容过多,处理起来相对会比较麻烦。

图片处理的相关流程

既然这个地方是最原始的消息内容,那么后面肯定会对消息进行相关处理。而且我们已经知道微信的接收的图片会用异或加密的方式保存到本地。那么我们不妨猜测一下图片相关的处理流程。

首先接收到原始的消息后,会对消息进行一系列的处理,其中就包括判断消息是否是图片。那么如果是图片则会取出图片数据,然后在内存中对图片进行加密。加密完成之后调用文件操作的API,写入加密后的图片到本地。

整个过程如图所示:

c654caa6e6409a8402d202bd2fc57d63.png

自动保存图片相关思路

既然了解图片处理的流程,而且已经有了接收图片消息的call,那么我们就可以在接收到图片消息之后,在CreateFileW创建图片之前,找到对图片进行加密的算法和函数,将未加密前的图片保存出来。

实战保存聊天图片

26fb6c634d645f2be5b637b65be5611a.png

在OD中找到保存语音的call,发送图片消息让程序断下的同时,对CreateFileW进行下断。之后F9运行

6e87ec0f9b5c9c4ba08e36e8a87e5cf6.png


此时文件路径为xlog,这个明显不符合我们的要求,继续F9运行

bb872fb9aa8bbe36a2bd07e7e36f2de6.png


一直找到图片路径带有Image关键字时,在创建图片

777d216bc082d37cbe57b841dbbc70f5.png


此时我们点击K显示堆栈,找到第一层返回地址,右键显示调用

cefaf2215539650504ffed8a74c270f6.png


当微信运行到这里的时候,图片加密已经完成,我们要在这个函数之前找到图片的加密算法,其实就在上面一点点的位置,鼠标稍微往上翻一下就能看到

831de28b706548334a6dcfc35b9398fa.png


找到这个地方之后清除剩下的所有的断点,只保留这一个

对保存图片call的相关分析

再次发送一张图片,程序断下。这段代码首先用循环的方式对图片进行加密,循环的次数即ecx的值,也就是图片的大小。其中有两个数据比较重要。

3fdfa5efc3ff03e4d7aa23b755806ea6.png

我们先在内存中查看[ebp-0x14]的内容,想要知道这段数据是什么其实很简单。先下CreateFileW断点

32a8e2bd6b179911301f2e7393d58147.png


当CreateFileW断点断下后,执行到返回,查看打开的文件句柄

76b056a9819da8e3d991087bfcae701f.png


此时打开的图片句柄为0xF80,此时再下WriteFile断点

92b36d8a2449756103f1c3c66878f3ec.png


WriteFile断下后可以看到句柄为F80,写入的缓冲区地址为39FE820,而[ebp-0x14]的地址正好也是39FE820。也就是说[ebp-0x14]这个位置保存的是加密后的图片数据

回到之前的断点,再次发送一张图片,查看[ebp-0x4]的数据

c671c7220ab996406e7f98a065e69e13.png

此时[ebp-0x4]中保存了接收的图片,而ecx保存了图片的大小

3bfc4e1e7c7547e98235c6cca454d5e2.png
ecdc468cb60bb103e79bb5bd19732878.png


这里借用PCHunter查看->进程内存,将这一段数据dump下来

2408d3ea111a37bb0d2080fab3b84281.png

问题就在于这里只是一张大小为4KB的缩略图,回到OD,再次按F9运行

b1a3045bb9f443a904a4c0ae133db25b.png


断点断下,但是此时ecx的值变成0x5A140

edd6039d6d7766ce9374d23d413e70f0.png


用同样的方法dump下内存,大小为360KB,这个就是我们需要的原图了。

也就是说这个地方会端下来两次,第一次是缩略图,第二次才是我们要的原图。

代码实现保存聊天图片

示例代码如下:

a7c62eca08167e9993b6410d419ddb7c.png
12cfc976c8abbad9d82563c76cb6ac77.png
5092b4eee5590bfd092aed4b96c76e1d.png

实际效果

83d3a52446d7ba61a17cd804945ca4bf.gif


原文链接:https://blog.csdn.net/qq_38474570/article/details/101755586

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity手游之路十自动寻路Navmesh之跳跃,攀爬,斜坡

转载 Unity手游之路<十>自动寻路Navmesh之跳跃,攀爬,斜坡 分类&#xff1a; unity2013-12-27 00:50 6545人阅读 评论(5) 收藏 举报unity3dNavmesh手游自动寻路在之前的几篇Blog总&#xff0c;我们已经系统学习了自动寻路插件Navmesh的相关概念和细节。然而&#xff0c;如…

热点分析图_通过分析功率MOSFET管的工作特性,判断其损坏原因

0 前言目前&#xff0c;功率 MOSFET管广泛地应用于开关电源系统及其它的一些功率电子电路中&#xff0c;然而&#xff0c;在实际的应用中&#xff0c;通常&#xff0c;在一些极端的边界条件下&#xff0c;如系统的输出短路及过载测试&#xff0c;输入过电压测试以及动态的老化测…

显示多个页面退出登陆_软件测试小白如何第一次登陆时给LINUX的配置网络

接着上一期分享&#xff0c;今天分享的是虚拟机配置完成以后我们接下来怎么做首先我们进入终端登录以后先显示的是user用户点击user输入密码&#xff0c;回车或者点击sigh ln第一次进入会让你选择语音&#xff0c;你可以根据自己的喜好决定如果安装的可视化界面&#xff0c;你的…

原理 msc_计算机网络原理梳理丨无线与移动网络

目录无线网络移动网络IEEE802.11蜂窝网络移动IP网络其它典型无线网络介绍无线网络无线网络的基本结构无线主机无线链路基站网络基础设施自组织网络(Ad Hoc网络)无线链路与无线网络特性无线链路与有线链路主要区别&#xff1a;1.信号强度的衰弱2.干扰3.多径传播4.隐藏终端移动网…

二维数组最大子数组和

一&#xff0e;实验题目 求一个二维数组中和最大的子数组。 二&#xff0e;实验思路 基于我们第一次合作时求的一位数组最大子数组&#xff0c;加上一层循环来遍历二维数组中的所有子矩阵的情况。 第一步&#xff1a;先利用上次的方法求每一行的情况&#xff0c;将每行结果存入…

木炭怎么获得_木炭机一体化流程中制做木炭是怎么完成的

关注我们获得更多精彩内容木炭机一体化流程中制做木炭是怎么完成的&#xff0c;木炭机生产线中炭化炉是核心设备。炭化炉炭化过程决定了木炭质量和效果。木炭机生产线中炭化过程需要经历三个不同温度阶段。三个不同温度阶段对薪棒的炭化作用不同。炭化好坏标志着木炭机制炭效果…

【转载】网易将军令工作原理

最近开始玩梦幻手游&#xff0c;为了领以前端游的返利必须输入将军令&#xff0c;那个已经一年没用了&#xff0c;输入了几次都提示错误&#xff08;后来证实是系统繁忙而已&#xff09;&#xff0c;我以为是将军令时间不对了&#xff0c;所以用了下官网的修复功能。也对将军令…

返回数据_多层数据返回匹配值

↑↑↑点击上方图片&#xff0c;了解详情Access Switch函数示例&#xff0c;分享源码。一、问题描述&#xff1a;想实现如下功能&#xff0c;发现用iff嵌套方式太复杂&#xff0c;有没有更简单的方法&#xff1f; A1≤750 返回5.0 750&#xff1c;A1≤865 返回5.…

HDU1114 Piggy-Bank 完全背包

题意&#xff1a; 给出一个存钱罐的空罐时的质量和装了钱之后的质量&#xff0c;再给出一些硬币的质量和相应的价值&#xff0c;问存钱罐里的钱最少可能为多少。 这道题就是完全背包的问题&#xff0c;注意初始化。 完全背包与01背包不同的是第二次遍历的时候要顺序而已。 初始…

jquery datatables 学习笔记

最近项目中用到了BootStrap做后台&#xff0c;在选择表格插件的时候发现了jquery datatables。 功能是很强大&#xff0c;但是网上的例子比较少。在经过一段时间的努力可算是搞出来了。 官网地址&#xff1a;http://www.datatables.net/ 官网上的例子比较简单&#xff0c;基础的…

mysql中的double类型_MySQL中float、double、decimal三个浮点类型的区别与总结!

作者&#xff1a;极客小俊 一个专注于web技术的80后我不用拼过聪明人&#xff0c;我只需要拼过那些懒人 我就一定会超越大部分人!CSDN极客小俊&#xff0c;原创文章, B站技术分享个人博客: cnblogs.com前端htmlcssjavascript技术讨论交流群: 281499395后端phpmysqlLinux技术交流…

当电压放大电路的开路增益和输出电阻固定后_晶体管放大电路的性能分析与应用...

关于三极管共射极放大电路的基本分析方法(见附录1)&#xff0c;我们之前有聊过。本文重点与大家分享下电路的性能分析&#xff0c;尤其电路的频率响应与选频特性&#xff0c;还是非常有趣的。主要内容有&#xff1a;输入输出电阻通频带如何提高放大倍数1节5号电池可以放大电路吗…

移动设备和SharePoint 2013 - 第5部分:自定义应用

博客地址&#xff1a;http://blog.csdn.net/foxdave原文地址在该系列文章中&#xff0c;作者展示了SharePoint 2013最显著的新功能概观——对移动设备的支持。该系列文章&#xff1a;移动设备和SharePoint 2013 - 第1部分&#xff1a;概述移动设备和SharePoint 2013 - 第2部分&…

java递归实现多级菜单栏_java利用递归调用实现树形菜单的样式

一&#xff1a;需求现有以需求就是把某一个帖子的全部评论展示出来。二&#xff1a;分析关于对帖子的评论分为主评论和子评论&#xff0c;主评论就是对帖子的直接评论&#xff0c;子评论就是对评论的评论。三&#xff1a;思路先获取某一个帖子的全部主评论&#xff0c;递归判断…

mysql in 保持顺序_IN条件结果顺序问题_MySQL

bitsCN.comIN条件结果顺序问题项目中需要记录用户的浏览历史&#xff0c;我的意见是前端直接存cookie里&#xff0c;可是前端说cookie内容太多&#xff0c;要求传递id&#xff0c;后端返回数据&#xff0c;结果就产生如下的问题。1.据前端说&#xff0c;url中的数组传递是无序的…

(部分转载,部分原创)java大数类(2)

NYOJ 773 开方数 http://acm.nyist.net/JudgeOnline/problem.php?pid773 1 import java.util.Scanner;2 3 public class Main{4 public static void main(String[] args){5 int n;6 double p;7 Scanner cin new Scanner(System.in);8 w…

python3 logging com1_python-logging-基础(1)

在执行用例的时候&#xff0c;往往会遇到各种问题&#xff0c;遇到问题后很难去定位import loggingclass Logs:def __init__(self,filepath,name):#self.namename#self.filepathfilepathself.configRead_config(Config_Http)#重新定义日志名字self.loggerlogging.getLogger(sel…

python 复数求模_Python基础语法知识汇总(学习党的最爱!)

本文章包含了Python一系列基本知识&#xff0c;其中包括&#xff1a;基本数据类型&#xff08;整数&#xff0c;浮点数&#xff0c;复数&#xff0c;字符串&#xff09;&#xff1b;分支语句&#xff1b;异常处理&#xff1b;函数&#xff1b;局部变量与全局变量&#xff1b;递…

JAVA装mysql_已经安装了mysql,怎么能在java程序里使用SQL?

展开全部1、安装62616964757a686964616fe4b893e5b19e31333335323437SQLServer2000安装SQLServer2000补丁SP3安装SQLServer2000 for SP3的驱动程序(先打补丁sp3&#xff0c;再安装针对sp3的驱动程序&#xff0c;安装补丁时&#xff0c;为保险起见&#xff0c;两种验证方式的都装…

用对工具,抖音、某站视频轻松下载~

相信大部分小伙伴都有过这样的困扰&#xff0c;平时我们在刷短视频的时候就发现一段我们需要的视频。想下载时才发现&#xff0c;“保存”按钮是灰色的。 这个时候我们可以通过复制视频链接的方式来下载视频。下面给大家介绍四种万能视频下载工具&#xff0c;大家记得点赞收藏再…