微信WeChatHelper3.1.0.72逆向-微信WeChatHelper3.1.0.72接口(WeChatHelper3.1.0.72.dll)-c#调用实例方法

30 篇文章 51 订阅
5 篇文章 0 订阅

WeChatHelper3.1.0.58.dll接口适用所有语言,今天我来讲一下用C#来做个实例调用。

第一步:下载并引用Newtonsoft.Json.dll类库

因为本接口是基于HTTP+JSON的,所有我们先下载c#开源的类库Newtonsoft.Json(下载地址 http://json.codeplex.com/ )

在项目中引用Newtonsoft.Json.dll(根据自己的版本,我用的是VS2017 版本是4.5)

 

第二步:创建HTTP类

HttpHelper.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
namespace WechatHelper
{
    class HttpHelper
    {
        public string GetData(string url)
        {
            string data = "";
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "GET";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream ResponseStream = response.GetResponseStream();
                StreamReader StreamReader = new StreamReader(ResponseStream, Encoding.GetEncoding("utf-8"));
                data = StreamReader.ReadToEnd();
                StreamReader.Close();
                ResponseStream.Close();
            }
            catch (Exception ex)
            {
            }
            finally
            {

            }
            return data;
        }
        public string GetPostData(string url, string param)
        {
            string data = "";
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                request.ContentType = "application/json;charset=utf-8";
                if (!string.IsNullOrEmpty(param))
                {
                    Stream RequestStream = request.GetRequestStream();
                    byte[] bytes = Encoding.UTF8.GetBytes(param);
                    RequestStream.Write(bytes, 0, bytes.Length);
                    RequestStream.Close();
                }
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream ResponseStream = response.GetResponseStream();
                StreamReader StreamReader = new StreamReader(ResponseStream, Encoding.GetEncoding("utf-8"));
                data = StreamReader.ReadToEnd();
                StreamReader.Close();
                ResponseStream.Close();
            }
            catch (Exception ex)
            {
            }
            finally
            {

            }
            return data;
        }
    }
}

第三步:创建JsonHelper类

本类只对聊天记录做处理,其它的可以照此方法。

JsonHelper.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using WechatHelper.RecordObject;
namespace WechatHelper
{
    class JsonHelper
    {
        /// <summary>
        /// 获取聊天记录数据
        /// </summary>
        /// <param name="jsonText">JSON文本数据</param>
        /// <returns></returns>
        static public RecordObject.RecordObject GetRecords(string jsonText)
        {
            RecordObject.RecordObject recordObject= JsonConvert.DeserializeObject<RecordObject.RecordObject>(jsonText);
            return recordObject;
        }
    }
}

第四步:创建聊天记录对象

聊天记录对象是根据聊天记录数据和类型创建的,我们来看一下聊天记录的JSON数据结构:

 

{
    "cmdid": 7,
    "maxid": 5,
    "count": 75,
    "status": "ok",
    "qq": "2376140244",
    "data": [
{
            "localId": 42,
            "MsgSvrID": "2062239765205091112",
            "StrTalker": "18618087204@chatroom",
            "StrContent": "<?xml version=\"1.0\"?>\n<msg>\n\t<img aeskey=\"611118464e36d48e86c891c79e25b07c\" encryver=\"1\" cdnthumbaeskey=\"611118464e36d48e86c891c79e25b07c\" cdnthumburl=\"3058020100044c304a0201000204be9026a302032f5d0302045938f0b702045fefffb90425617570696d675f383038376264343062646134646465335f31363039353634303839373537020401090a020201000405004c56fb00\" cdnthumblength=\"4043\" cdnthumbheight=\"140\" cdnthumbwidth=\"56\" cdnmidheight=\"0\" cdnmidwidth=\"0\" cdnhdheight=\"0\" cdnhdwidth=\"0\" cdnmidimgurl=\"3058020100044c304a0201000204be9026a302032f5d0302045938f0b702045fefffb90425617570696d675f383038376264343062646134646465335f31363039353634303839373537020401090a020201000405004c56fb00\" length=\"24332\" md5=\"692efd877bce4ad7dc41becca0d2278d\" hevc_mid_size=\"24332\" />\n</msg>\n",
            "CreateTime": 1609564091,
            "IsSender": 0,
            "type": 3,
            "SubType": 0,
            "CompressContent": "",
            "BytesExtra": {
                "wxid": "wxid_y7hw81zn588b12",
                "thumb": "keepmoving8\\FileStorage\\Image\\Thumb\\2021-01\\e03c67108d6c39c020c48696dbd36916_t.dat",
                "image": "keepmoving8\\FileStorage\\Image\\2021-01\\4953c7f182c4741eec97c9ab6bfe1eb4.dat",
                "video": ""
            }
        },
        {
            "localId": 43,
            "MsgSvrID": "3036343329427015238",
            "StrTalker": "2656683682@chatroom",
            "StrContent": "收满不收弹头40",
            "CreateTime": 1609564122,
            "IsSender": 0,
            "type": 1,
            "SubType": 0,
            "CompressContent": "",
            "BytesExtra": {
                "wxid": "wxid_87rw855vmv4h22",
                "thumb": "",
                "image": "",
                "video": ""
            }
        },
        {
            "localId": 44,
            "MsgSvrID": "6558585969683208319",
            "StrTalker": "JI282940039",
            "StrContent": "要的滴滴我",
            "CreateTime": 1609564128,
            "IsSender": 0,
            "type": 1,
            "SubType": 0,
            "CompressContent": "",
            "BytesExtra": {
                "wxid": "",
                "thumb": "",
                "image": "",
                "video": ""
            }
        }
    ]
}

上面记录中有三种记录:

1.群图片消息,群发送的微信ID和图片的地址已显示在扩展数据中。

2.群文本消息,群发送的微信ID显示在扩展数据中。

3.普通好友文本消息,扩展数据都是空。

根据JSON数据结构,我们在c#中构造聊天记录对象模型:

RecordObject.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

/// <summary>
/// 聊天记录对象
/// </summary>
namespace WechatHelper.RecordObject
{
    /// <summary>
    /// 聊天记录主要数据
    /// </summary>
    public class data
    {
        public int localId { get; set; }//记录ID
        public string MsgSvrID { get; set; }//消息ID
        public string StrTalker { get; set; }//群消息
        public string StrContent { get; set; } //内容
        public int CreateTime { get; set; }//创建时间
        public int IsSender { get; set; }//是否自己发送
        public int type { get; set; }//消息类型
        public int SubType { get; set; }//子类型
        public string CompressContent { get; set; } //这里为转账金额信息,有+与-表示:收到与转出   
        public BytesExtra BytesExtra { get; set; }
    }

    /// <summary>
    /// 聊天记录扩展数据
    /// </summary>
    public class BytesExtra
    {
        public string wxid { get; set; }//      群消息时发送者微信ID"

        public string thumb { get; set; }   //     图片类型时缩微图路径"

        public string image { get; set; }// 图片或视频类型时图片路径"

        public string mp4 { get; set; }//视频类型时MP4路径"
    }

    /// <summary>
    /// 聊天记录对象
    /// </summary>
    public class RecordObject
    {
        public int cmdid { get; set; }
        public int maxid { get; set; }//记录索引
        public int count { get; set; }//信息条数
        public string qq { get; set; }//本人QQ
        public string status { get; set; }//状态
        public List<data> data { get; set; }//消息主体数组
    }
}

第五步:主程序调用

上面步骤都完成了,就等着主程序调用了,我们在主窗体中创建一个 Timer定时器,每3秒中刷新一次聊天记录:

private void timer1_Tick(object sender, EventArgs e)
        {
            HttpHelper http = new HttpHelper();
            string data =http.GetData("http://127.0.0.1/?cmdid=7");
            RecordObject.RecordObject recordObject = JsonHelper.GetRecords(data);
            foreach(RecordObject.data record in recordObject.data)
            {
                txt_resault.AppendText(record.StrContent+"\r\n");
                txt_resault.AppendText("***********************************************************\r\n");
            }
        }

看,就是这么简单!

c#调用下载地址(vs2017 .net4.5版本):https://download.csdn.net/download/keepmoving0407/14010292

也可以进群交流下载:(交流群:561112477 1005923608

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值