From 8ae2607d7b58705cbdfc2c89ee185fb478351fa9 Mon Sep 17 00:00:00 2001 From: huiyadanli Date: Sun, 6 Oct 2019 13:19:15 +0800 Subject: [PATCH] =?UTF-8?q?[#]=20=E5=AE=8C=E5=96=84=E4=BA=86=E8=A1=A5?= =?UTF-8?q?=E4=B8=81=E6=9B=B4=E6=96=B0=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RevokeMsgPatcher.sln | 6 + RevokeMsgPatcher/FormMain.Designer.cs | 4 +- RevokeMsgPatcher/FormMain.cs | 93 +++++++-- RevokeMsgPatcher/JsonData.cs | 192 ------------------ RevokeMsgPatcher/Model/App.cs | 28 +++ RevokeMsgPatcher/Modifier/AppModifier.cs | 2 +- .../Properties/Resources.Designer.cs | 2 +- RevokeMsgPatcher/Properties/Resources.resx | 2 +- RevokeMsgPatcher/RevokeMsgPatcher.csproj | 1 - 9 files changed, 117 insertions(+), 213 deletions(-) delete mode 100644 RevokeMsgPatcher/JsonData.cs diff --git a/RevokeMsgPatcher.sln b/RevokeMsgPatcher.sln index e632b93..95be170 100644 --- a/RevokeMsgPatcher.sln +++ b/RevokeMsgPatcher.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 15.0.28010.2016 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RevokeMsgPatcher", "RevokeMsgPatcher\RevokeMsgPatcher.csproj", "{977BF781-CED8-4389-9404-0FA08FDF21DF}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RevokeMsgPatcher.Assistant", "RevokeMsgPatcher.Assistant\RevokeMsgPatcher.Assistant.csproj", "{6992004F-17E6-45BF-8D72-180A31E9C23C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,6 +17,10 @@ Global {977BF781-CED8-4389-9404-0FA08FDF21DF}.Debug|Any CPU.Build.0 = Debug|Any CPU {977BF781-CED8-4389-9404-0FA08FDF21DF}.Release|Any CPU.ActiveCfg = Release|Any CPU {977BF781-CED8-4389-9404-0FA08FDF21DF}.Release|Any CPU.Build.0 = Release|Any CPU + {6992004F-17E6-45BF-8D72-180A31E9C23C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6992004F-17E6-45BF-8D72-180A31E9C23C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6992004F-17E6-45BF-8D72-180A31E9C23C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6992004F-17E6-45BF-8D72-180A31E9C23C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/RevokeMsgPatcher/FormMain.Designer.cs b/RevokeMsgPatcher/FormMain.Designer.cs index b39c9e9..d7bc826 100644 --- a/RevokeMsgPatcher/FormMain.Designer.cs +++ b/RevokeMsgPatcher/FormMain.Designer.cs @@ -116,9 +116,9 @@ // lblUpdatePachJson // this.lblUpdatePachJson.Cursor = System.Windows.Forms.Cursors.Hand; - this.lblUpdatePachJson.Location = new System.Drawing.Point(312, 89); + this.lblUpdatePachJson.Location = new System.Drawing.Point(166, 89); this.lblUpdatePachJson.Name = "lblUpdatePachJson"; - this.lblUpdatePachJson.Size = new System.Drawing.Size(162, 12); + this.lblUpdatePachJson.Size = new System.Drawing.Size(308, 12); this.lblUpdatePachJson.TabIndex = 9; this.lblUpdatePachJson.Text = "[ 获取最新补丁信息中... ]"; this.lblUpdatePachJson.TextAlign = System.Drawing.ContentAlignment.TopRight; diff --git a/RevokeMsgPatcher/FormMain.cs b/RevokeMsgPatcher/FormMain.cs index b53e2a1..9295ca1 100644 --- a/RevokeMsgPatcher/FormMain.cs +++ b/RevokeMsgPatcher/FormMain.cs @@ -6,21 +6,33 @@ using System.Collections.Generic; using System.IO; using System.Net; using System.Threading.Tasks; +using System.Web.Script.Serialization; using System.Windows.Forms; namespace RevokeMsgPatcher { public partial class FormMain : Form { - AppModifier modifier = null; + // 当前使用的修改者 + private AppModifier modifier = null; + private WechatModifier wechatModifier = null; + private QQModifier qqModifier = null; + private TIMModifier timModifier = null; + + private string thisVersion; + private bool needUpdate = false; + public void InitModifier() { - Bag bag = new JsonData().Bag(); + // 从配置文件中读取配置 + JavaScriptSerializer serializer = new JavaScriptSerializer(); + Bag bag = serializer.Deserialize(Properties.Resources.PatchJson); - WechatModifier wechatModifier = new WechatModifier(bag.Apps["Wechat"]); - QQModifier qqModifier = new QQModifier(bag.Apps["QQ"]); - TIMModifier timModifier = new TIMModifier(bag.Apps["TIM"]); + // 初始化每个应用对应的修改者 + wechatModifier = new WechatModifier(bag.Apps["Wechat"]); + qqModifier = new QQModifier(bag.Apps["QQ"]); + timModifier = new TIMModifier(bag.Apps["TIM"]); rbtWechat.Tag = wechatModifier; rbtQQ.Tag = qqModifier; @@ -39,7 +51,8 @@ namespace RevokeMsgPatcher string currentVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); if (currentVersion.Length > 3) { - currentVersion = " v" + currentVersion.Substring(0, 3); + thisVersion = currentVersion.Substring(0, 3); + currentVersion = " v" + thisVersion; } this.Text += currentVersion; @@ -158,7 +171,25 @@ namespace RevokeMsgPatcher // 异步获取最新的补丁信息 Task t = new Task(() => { - return new WebClient().DownloadString("https://huiyadanli.coding.me/i/patch.json"); + string downStr = null; + WebClient wc = new WebClient(); + try + { + downStr = wc.DownloadString("https://huiyadanli.coding.me/i/revokemsg/05.json"); + } + catch (Exception ex1) + { + Console.WriteLine(ex1.Message); + try + { + downStr = wc.DownloadString("https://www.huiyadan.com/i/revokemsg/05.json"); + } + catch (Exception ex2) + { + Console.WriteLine(ex2.Message); + } + } + return downStr; }); t.Start(); string json = await t; @@ -169,19 +200,51 @@ namespace RevokeMsgPatcher } else { - //patcher.SetNewPatchJson(json); - lblUpdatePachJson.Text = "[ 获取成功 ]"; + try + { + JavaScriptSerializer serializer = new JavaScriptSerializer(); + Bag bag = serializer.Deserialize(json); + + wechatModifier.Config = bag.Apps["Wechat"]; + qqModifier.Config = bag.Apps["QQ"]; + timModifier.Config = bag.Apps["TIM"]; + + if (Convert.ToDecimal(bag.LatestVersion) > Convert.ToDecimal(thisVersion)) + { + needUpdate = true; + lblUpdatePachJson.Text = $"[ 请到软件主页下载最新版本 {bag.LatestVersion} ]"; + } + else + { + needUpdate = false; + lblUpdatePachJson.Text = "[ 获取成功 ]"; + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + lblUpdatePachJson.Text = "[ 更换新配置时异常 ]"; + } } } private void lblUpdatePachJson_Click(object sender, EventArgs e) { - string versions = ""; - //patcher.TargetFiles.ForEach(t => - //{ - // versions += t.Version + Environment.NewLine; - //}); - MessageBox.Show("当前所支持的微信版本:" + Environment.NewLine + versions); + string tips = ""; + if(needUpdate) + { + tips += "【当前存在最新版本,点击确定进入软件主页下载最新版本。】" + Environment.NewLine + Environment.NewLine; + } + tips += "支持以下版本" +Environment.NewLine; + tips += " ➯ 微信:" + wechatModifier.Config.GetSupportVersionStr() + Environment.NewLine; + tips += " ➯ QQ:" + qqModifier.Config.GetSupportVersionStr() + Environment.NewLine; + tips += " ➯ TIM:" + timModifier.Config.GetSupportVersionStr() + Environment.NewLine; + + DialogResult dr = MessageBox.Show(tips, "当前支持防撤回的版本", MessageBoxButtons.OKCancel); + if (dr == DialogResult.OK && needUpdate) + { + System.Diagnostics.Process.Start("https://github.com/huiyadanli/RevokeMsgPatcher/releases"); + } } private void radioButtons_CheckedChanged(object sender, EventArgs e) diff --git a/RevokeMsgPatcher/JsonData.cs b/RevokeMsgPatcher/JsonData.cs deleted file mode 100644 index 87b15a4..0000000 --- a/RevokeMsgPatcher/JsonData.cs +++ /dev/null @@ -1,192 +0,0 @@ -using RevokeMsgPatcher.Model; -using System.Collections.Generic; -using System.Web.Script.Serialization; - -namespace RevokeMsgPatcher -{ - - public class JsonData - { - - public Bag Bag() - { - return new Bag - { - Apps = AppConfig(), - LatestVersion = "0.5", - Notice = "公告" - }; - } - - public string BagJson() - { - JavaScriptSerializer serializer = new JavaScriptSerializer(); - return serializer.Serialize(Bag()); - } - - public Dictionary AppConfig() - { - return new Dictionary - { - { "Wechat" , Wechat() }, - { "QQ" , QQ() }, - { "TIM" , TIM() } - }; - } - - public string AppConfigJson() - { - JavaScriptSerializer serializer = new JavaScriptSerializer(); - return serializer.Serialize(AppConfig()); - } - - public App Wechat() - { - return new App - { - Name = "Wechat", - FileTargetInfos = new Dictionary - { - { - "WeChatWin.dll", - new TargetInfo - { - Name = "WeChatWin.dll", - RelativePath = "WeChatWin.dll" - } - } - }, - FileModifyInfos = new Dictionary> - { - { - "WeChatWin.dll", - new List - { - new ModifyInfo { - Name="WeChatWin.dll", - Version="2.7.1.65", - SHA1Before="8346b97d264725da924d240c6eb77df3e693385e", - SHA1After="42bab2c9c79ef4f2088c00ea6d817973e14a5e6e", - Changes = new List - { - new Change - { - Position =2495545, - Content =new byte[] { 235} - } - } - }, - new ModifyInfo {Name="WeChatWin.dll",Version="2.7.1.59",SHA1Before="df954d403edaca89cd5394927a325a0023e93281",SHA1After="6aa22460c91bb5c5e2f0ec1af99b8a5f6d4318c0",Changes = new List { new Change {Position=2496073,Content=new byte[] { 235} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.7.1.43",SHA1Before="39cd9e09e1a3eac09e6808749bff525c9e3216ce",SHA1After="7b829f1ff0217e346a80f9510fdd7634ddd49445",Changes = new List { new Change {Position=2494169,Content=new byte[] { 235} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.7.0.70",SHA1Before="3b0601864aff3c1d792f812ad1ca05f02aa761e3",SHA1After="1e8734d32b0a8c12758e30f99c77f729991fb071",Changes = new List { new Change {Position=2475657,Content=new byte[] { 235} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.7.0.65",SHA1Before="063c2e05a0df1bdb8987c2d978d93499bd2052ba",SHA1After="5ed4c09a4f18643b967f063a824d7e65d0567f8a",Changes = new List { new Change {Position=2475449,Content=new byte[] { 117} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.68",SHA1Before="2e9417f4276b12fe32ca7b4fee49272a4a2af334",SHA1After="699602ee3cbb9ae5714f6e6ebc658c875a6c66e6",Changes = new List { new Change {Position=2454006,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.65",SHA1Before="e01f6855a96c12c30808960903ed199a33e4952c",SHA1After="d9120569cfd0433aebea107d7b90805cbbac7518",Changes = new List { new Change {Position=2454265,Content=new byte[] { 117} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.52",SHA1Before="88131302f664df6a657c9ca49d152da536fe5729",SHA1After="8d1454b73831644181e962c1fa0ea4e2da4124a3",Changes = new List { new Change {Position=2453049,Content=new byte[] { 117} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.51",SHA1Before="d0a5517b1292a751501b00b4b1f0702db2d9fc30",SHA1After="53e7b1525d49bf2c3250a8131ff0ba2510779b78",Changes = new List { new Change {Position=2452614,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.37",SHA1Before="7e01f8b04a158a4a50bc5a6e67c2fb8b02233170",SHA1After="a1895004415fe9bcd7e690bd6e482b833b515599",Changes = new List { new Change {Position=2452614,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.7.57",SHA1Before="80a91aaf941bcb1c24a7d672838ac73e9ebb2e40",SHA1After="a0d3f9a45a835f97aef7fe0872387d8cfb5c25a4",Changes = new List { new Change {Position=2433413,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.7.40",SHA1Before="04bd0cb28df6630b518f42a3f9c2caa4a9359fbc",SHA1After="13c91cf1d4609959771fd137b9a86a5ca365e1b6",Changes = new List { new Change {Position=2432934,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.7.32",SHA1Before="a02519c1007ee6723947c262c720d63c619f633e",SHA1After="f3007471ca8734c29783c25f0bb49949a783a44",Changes = new List { new Change {Position=2432806,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.6.28",SHA1Before="0b19cb17a62c3ea0efce0fb675a1d3b17845cba3",SHA1After="260948656725446b818ea668273ceff02ddfb44d",Changes = new List { new Change {Position=2401678,Content=new byte[] { 116} } } } - } - } - } - }; - } - - public App QQ() - { - return new App - { - Name = "QQ", - FileTargetInfos = new Dictionary - { - { - "IM.dll", - new TargetInfo - { - Name = "IM.dll", - RelativePath = @"Bin\IM.dll" - } - } - }, - FileModifyInfos = new Dictionary> - { - { - "IM.dll", - new List - { - new ModifyInfo - { - Name = "IM.dll", - Version = "9.1.7.25980", - SHA1Before = "c6632339fbe675312a70ae4620e70699c258cd36", - SHA1After = "e9ddc5cc681950796fc8fe4c55f580428c890b51", - Changes = new List - { - new Change - { - Position = 0x0005009F, - Content = new byte[] { 0xEB, 0x90, 0x90, 0x90, 0x90 } - }, - new Change - { - Position = 0x000502BC, - Content = new byte[] { 0xEB, 0x90, 0x90, 0x90, 0x90 } - }, - new Change - { - Position = 0x0005046C, - Content = new byte[] { 0xEB, 0x08, 0x90, 0x90, 0x90, 0x90 } - } - } - } - } - } - } - }; - } - - public App TIM() - { - return new App - { - Name = "TIM", - FileTargetInfos = new Dictionary - { - { - "IM.dll", - new TargetInfo - { - Name = "IM.dll", - RelativePath = @"Bin\IM.dll" - } - } - }, - FileModifyInfos = new Dictionary> - { - { - "IM.dll", - new List - { - new ModifyInfo - { - Name = "IM.dll", - Version = "2.3.2.21173", - SHA1Before = "ecf3e69f3fb100ffe2fee095ffded591b9781024", - SHA1After = "0514d1304e7ac46b4d33386ec3313888f5ae7171", - Changes = new List - { - new Change - { - Position = 0x0004D78A, - Content = new byte[] { 0xEB, 0x90, 0x90, 0x90, 0x90 } - }, - new Change - { - Position = 0x0004D9A7, - Content = new byte[] { 0xEB, 0x90, 0x90, 0x90, 0x90 } - }, - new Change - { - Position = 0x0004DB57, - Content = new byte[] { 0xEB, 0x08, 0x90, 0x90, 0x90, 0x90 } - } - } - } - } - } - } - }; - } - } -} diff --git a/RevokeMsgPatcher/Model/App.cs b/RevokeMsgPatcher/Model/App.cs index 0b05e91..cbeaf54 100644 --- a/RevokeMsgPatcher/Model/App.cs +++ b/RevokeMsgPatcher/Model/App.cs @@ -13,5 +13,33 @@ namespace RevokeMsgPatcher.Model public Dictionary FileTargetInfos { get; set; } public Dictionary> FileModifyInfos { get; set; } + + public HashSet GetSupportVersions() + { + // 使用 HashSet 防重 + HashSet versions = new HashSet(); + foreach (List modifyInfos in FileModifyInfos.Values) + { + foreach (ModifyInfo modifyInfo in modifyInfos) + { + versions.Add(modifyInfo.Version); + } + } + return versions; + } + + public string GetSupportVersionStr() + { + string str = ""; + foreach (string v in GetSupportVersions()) + { + str += v + "、"; + } + if (str.Length > 1) + { + str = str.Substring(0, str.Length - 1); + } + return str; + } } } diff --git a/RevokeMsgPatcher/Modifier/AppModifier.cs b/RevokeMsgPatcher/Modifier/AppModifier.cs index c720960..3c355ff 100644 --- a/RevokeMsgPatcher/Modifier/AppModifier.cs +++ b/RevokeMsgPatcher/Modifier/AppModifier.cs @@ -19,7 +19,7 @@ namespace RevokeMsgPatcher.Modifier { protected App config; - public App Config { set { config = value; } } + public App Config { set { config = value; } get { return config; } } protected List editors; diff --git a/RevokeMsgPatcher/Properties/Resources.Designer.cs b/RevokeMsgPatcher/Properties/Resources.Designer.cs index a9f5581..744cbbf 100644 --- a/RevokeMsgPatcher/Properties/Resources.Designer.cs +++ b/RevokeMsgPatcher/Properties/Resources.Designer.cs @@ -61,7 +61,7 @@ namespace RevokeMsgPatcher.Properties { } /// - /// 查找类似 [{"FileName":"WeChatWin.dll","Version":"2.6.8.65","SHA1Before":"e01f6855a96c12c30808960903ed199a33e4952c","SHA1After":"d9120569cfd0433aebea107d7b90805cbbac7518","Position":2454265,"Content":117},{"FileName":"WeChatWin.dll","Version":"2.6.8.52","SHA1Before":"88131302f664df6a657c9ca49d152da536fe5729","SHA1After":"8d1454b73831644181e962c1fa0ea4e2da4124a3","Position":2453049,"Content":117},{"FileName":"WeChatWin.dll","Version":"2.6.8.51","SHA1Before":"d0a5517b1292a751501b00b4b1f0702db2d9fc30","SHA1After":"53e7b [字符串的其余部分被截断]"; 的本地化字符串。 + /// 查找类似 {"Apps":{"Wechat":{"Name":"Wechat","FileTargetInfos":{"WeChatWin.dll":{"Name":"WeChatWin.dll","RelativePath":"WeChatWin.dll","Memo":null}},"FileModifyInfos":{"WeChatWin.dll":[{"Name":"WeChatWin.dll","Version":"2.7.1.65","SHA1Before":"8346b97d264725da924d240c6eb77df3e693385e","SHA1After":"42bab2c9c79ef4f2088c00ea6d817973e14a5e6e","Changes":[{"Position":2495545,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.59","SHA1Before":"df954d403edaca89cd5394927a325a0023e93281","SHA1After":"6aa22460c91bb5c5e [字符串的其余部分被截断]"; 的本地化字符串。 /// internal static string PatchJson { get { diff --git a/RevokeMsgPatcher/Properties/Resources.resx b/RevokeMsgPatcher/Properties/Resources.resx index 166c0e1..df60228 100644 --- a/RevokeMsgPatcher/Properties/Resources.resx +++ b/RevokeMsgPatcher/Properties/Resources.resx @@ -118,6 +118,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - [{"FileName":"WeChatWin.dll","Version":"2.6.8.65","SHA1Before":"e01f6855a96c12c30808960903ed199a33e4952c","SHA1After":"d9120569cfd0433aebea107d7b90805cbbac7518","Position":2454265,"Content":117},{"FileName":"WeChatWin.dll","Version":"2.6.8.52","SHA1Before":"88131302f664df6a657c9ca49d152da536fe5729","SHA1After":"8d1454b73831644181e962c1fa0ea4e2da4124a3","Position":2453049,"Content":117},{"FileName":"WeChatWin.dll","Version":"2.6.8.51","SHA1Before":"d0a5517b1292a751501b00b4b1f0702db2d9fc30","SHA1After":"53e7b1525d49bf2c3250a8131ff0ba2510779b78","Position":2452614,"Content":116},{"FileName":"WeChatWin.dll","Version":"2.6.8.37","SHA1Before":"7e01f8b04a158a4a50bc5a6e67c2fb8b02233170","SHA1After":"a1895004415fe9bcd7e690bd6e482b833b515599","Position":2452614,"Content":116},{"FileName":"WeChatWin.dll","Version":"2.6.7.57","SHA1Before":"80a91aaf941bcb1c24a7d672838ac73e9ebb2e40","SHA1After":"a0d3f9a45a835f97aef7fe0872387d8cfb5c25a4","Position":2433413,"Content":116},{"FileName":"WeChatWin.dll","Version":"2.6.7.40","SHA1Before":"04bd0cb28df6630b518f42a3f9c2caa4a9359fbc","SHA1After":"13c91cf1d4609959771fd137b9a86a5ca365e1b6","Position":2432934,"Content":116},{"FileName":"WeChatWin.dll","Version":"2.6.7.32","SHA1Before":"a02519c1007ee6723947c262c720d63c619f633e","SHA1After":"f3007471ca8734c29783c25f0bb49949a783a44","Position":2432806,"Content":116},{"FileName":"WeChatWin.dll","Version":"2.6.6.28","SHA1Before":"0b19cb17a62c3ea0efce0fb675a1d3b17845cba3","SHA1After":"260948656725446b818ea668273ceff02ddfb44d","Position":2401678,"Content":116}] + {"Apps":{"Wechat":{"Name":"Wechat","FileTargetInfos":{"WeChatWin.dll":{"Name":"WeChatWin.dll","RelativePath":"WeChatWin.dll","Memo":null}},"FileModifyInfos":{"WeChatWin.dll":[{"Name":"WeChatWin.dll","Version":"2.7.1.65","SHA1Before":"8346b97d264725da924d240c6eb77df3e693385e","SHA1After":"42bab2c9c79ef4f2088c00ea6d817973e14a5e6e","Changes":[{"Position":2495545,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.59","SHA1Before":"df954d403edaca89cd5394927a325a0023e93281","SHA1After":"6aa22460c91bb5c5e2f0ec1af99b8a5f6d4318c0","Changes":[{"Position":2496073,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.43","SHA1Before":"39cd9e09e1a3eac09e6808749bff525c9e3216ce","SHA1After":"7b829f1ff0217e346a80f9510fdd7634ddd49445","Changes":[{"Position":2494169,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.0.70","SHA1Before":"3b0601864aff3c1d792f812ad1ca05f02aa761e3","SHA1After":"1e8734d32b0a8c12758e30f99c77f729991fb071","Changes":[{"Position":2475657,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.0.65","SHA1Before":"063c2e05a0df1bdb8987c2d978d93499bd2052ba","SHA1After":"5ed4c09a4f18643b967f063a824d7e65d0567f8a","Changes":[{"Position":2475449,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.68","SHA1Before":"2e9417f4276b12fe32ca7b4fee49272a4a2af334","SHA1After":"699602ee3cbb9ae5714f6e6ebc658c875a6c66e6","Changes":[{"Position":2454006,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.65","SHA1Before":"e01f6855a96c12c30808960903ed199a33e4952c","SHA1After":"d9120569cfd0433aebea107d7b90805cbbac7518","Changes":[{"Position":2454265,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.52","SHA1Before":"88131302f664df6a657c9ca49d152da536fe5729","SHA1After":"8d1454b73831644181e962c1fa0ea4e2da4124a3","Changes":[{"Position":2453049,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.51","SHA1Before":"d0a5517b1292a751501b00b4b1f0702db2d9fc30","SHA1After":"53e7b1525d49bf2c3250a8131ff0ba2510779b78","Changes":[{"Position":2452614,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.37","SHA1Before":"7e01f8b04a158a4a50bc5a6e67c2fb8b02233170","SHA1After":"a1895004415fe9bcd7e690bd6e482b833b515599","Changes":[{"Position":2452614,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.57","SHA1Before":"80a91aaf941bcb1c24a7d672838ac73e9ebb2e40","SHA1After":"a0d3f9a45a835f97aef7fe0872387d8cfb5c25a4","Changes":[{"Position":2433413,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.40","SHA1Before":"04bd0cb28df6630b518f42a3f9c2caa4a9359fbc","SHA1After":"13c91cf1d4609959771fd137b9a86a5ca365e1b6","Changes":[{"Position":2432934,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.32","SHA1Before":"a02519c1007ee6723947c262c720d63c619f633e","SHA1After":"f3007471ca8734c29783c25f0bb49949a783a44","Changes":[{"Position":2432806,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.6.28","SHA1Before":"0b19cb17a62c3ea0efce0fb675a1d3b17845cba3","SHA1After":"260948656725446b818ea668273ceff02ddfb44d","Changes":[{"Position":2401678,"Content":[116]}]}]}},"QQ":{"Name":"QQ","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"9.1.7.25980","SHA1Before":"c6632339fbe675312a70ae4620e70699c258cd36","SHA1After":"e9ddc5cc681950796fc8fe4c55f580428c890b51","Changes":[{"Position":327839,"Content":[235,144,144,144,144]},{"Position":328380,"Content":[235,144,144,144,144]},{"Position":328812,"Content":[235,8,144,144,144,144]}]}]}},"TIM":{"Name":"TIM","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"2.3.2.21173","SHA1Before":"ecf3e69f3fb100ffe2fee095ffded591b9781024","SHA1After":"0514d1304e7ac46b4d33386ec3313888f5ae7171","Changes":[{"Position":317322,"Content":[235,144,144,144,144]},{"Position":317863,"Content":[235,144,144,144,144]},{"Position":318295,"Content":[235,8,144,144,144,144]}]}]}}},"LatestVersion":"0.5","Notice":"公告"} \ No newline at end of file diff --git a/RevokeMsgPatcher/RevokeMsgPatcher.csproj b/RevokeMsgPatcher/RevokeMsgPatcher.csproj index 4536741..715d2ba 100644 --- a/RevokeMsgPatcher/RevokeMsgPatcher.csproj +++ b/RevokeMsgPatcher/RevokeMsgPatcher.csproj @@ -69,7 +69,6 @@ - FormMain.cs