mirror of
				https://github.com/huiyadanli/RevokeMsgPatcher.git
				synced 2025-11-04 13:56:08 +08:00 
			
		
		
		
	[+] 添加对QQ轻聊版的支持
This commit is contained in:
		
							parent
							
								
									a9f41478f6
								
							
						
					
					
						commit
						703fbbdbb3
					
				| 
						 | 
				
			
			@ -15,7 +15,7 @@ namespace RevokeMsgPatcher
 | 
			
		|||
            return new Bag
 | 
			
		||||
            {
 | 
			
		||||
                Apps = AppConfig(),
 | 
			
		||||
                LatestVersion = "0.5",
 | 
			
		||||
                LatestVersion = "0.6",
 | 
			
		||||
                Notice = "公告"
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -32,7 +32,8 @@ namespace RevokeMsgPatcher
 | 
			
		|||
            {
 | 
			
		||||
                { "Wechat" , Wechat() },
 | 
			
		||||
                { "QQ" , QQ() },
 | 
			
		||||
                { "TIM" , TIM() }
 | 
			
		||||
                { "TIM" , TIM() },
 | 
			
		||||
                { "QQLite" , QQLite() }
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -347,5 +348,73 @@ namespace RevokeMsgPatcher
 | 
			
		|||
                }
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public App QQLite()
 | 
			
		||||
        {
 | 
			
		||||
            return new App
 | 
			
		||||
            {
 | 
			
		||||
                Name = "QQLite",
 | 
			
		||||
                FileTargetInfos = new Dictionary<string, TargetInfo>
 | 
			
		||||
                {
 | 
			
		||||
                    {
 | 
			
		||||
                        "IM.dll",
 | 
			
		||||
                        new TargetInfo
 | 
			
		||||
                        {
 | 
			
		||||
                            Name = "IM.dll",
 | 
			
		||||
                            RelativePath = @"Bin\IM.dll"
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                },
 | 
			
		||||
                FileModifyInfos = new Dictionary<string, List<ModifyInfo>>
 | 
			
		||||
                {
 | 
			
		||||
                    {
 | 
			
		||||
                        "IM.dll",
 | 
			
		||||
                        new List<ModifyInfo>
 | 
			
		||||
                        {
 | 
			
		||||
                            new ModifyInfo
 | 
			
		||||
                            {
 | 
			
		||||
                                Name = "IM.dll",
 | 
			
		||||
                                Version = "7.9.14314.0",
 | 
			
		||||
                                SHA1Before = "2e97d7671963fa148a1beeda6ce4964314310593",
 | 
			
		||||
                                SHA1After = "723c008fb53435ead20fa6f2e951c9a4a8ff46da",
 | 
			
		||||
                                Changes = new List<Change>
 | 
			
		||||
                                {
 | 
			
		||||
                                    new Change
 | 
			
		||||
                                    {
 | 
			
		||||
                                        Position = 0x00024505,
 | 
			
		||||
                                        Content = new byte[] { 0xEB, 0x02, 0x90, 0x90 }
 | 
			
		||||
                                    },
 | 
			
		||||
                                    new Change
 | 
			
		||||
                                    {
 | 
			
		||||
                                        Position = 0x000248B9,
 | 
			
		||||
                                        Content = new byte[] { 0xEB, 0x02, 0x90, 0x90 }
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                            },
 | 
			
		||||
                            new ModifyInfo
 | 
			
		||||
                            {
 | 
			
		||||
                                Name = "IM.dll",
 | 
			
		||||
                                Version = "7.9.14308.0",
 | 
			
		||||
                                SHA1Before = "b8a7a873178706b97be11c25f13bcf09e9e578a2",
 | 
			
		||||
                                SHA1After = "c5bf533c7af6996b42d1fb2a0fb3f26dfd52f8bf",
 | 
			
		||||
                                Changes = new List<Change>
 | 
			
		||||
                                {
 | 
			
		||||
                                    new Change
 | 
			
		||||
                                    {
 | 
			
		||||
                                        Position = 0x00024505,
 | 
			
		||||
                                        Content = new byte[] { 0xEB, 0x02, 0x90, 0x90 }
 | 
			
		||||
                                    },
 | 
			
		||||
                                    new Change
 | 
			
		||||
                                    {
 | 
			
		||||
                                        Position = 0x000248B9,
 | 
			
		||||
                                        Content = new byte[] { 0xEB, 0x02, 0x90, 0x90 }
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										16
									
								
								RevokeMsgPatcher/FormMain.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								RevokeMsgPatcher/FormMain.Designer.cs
									
									
									
										generated
									
									
									
								
							| 
						 | 
				
			
			@ -44,6 +44,7 @@
 | 
			
		|||
            this.rbtTIM = new System.Windows.Forms.RadioButton();
 | 
			
		||||
            this.label5 = new System.Windows.Forms.Label();
 | 
			
		||||
            this.panelMask = new System.Windows.Forms.Panel();
 | 
			
		||||
            this.rbtQQLite = new System.Windows.Forms.RadioButton();
 | 
			
		||||
            this.SuspendLayout();
 | 
			
		||||
            // 
 | 
			
		||||
            // lblPathTag
 | 
			
		||||
| 
						 | 
				
			
			@ -136,9 +137,8 @@
 | 
			
		|||
            this.lblVersion.AutoSize = true;
 | 
			
		||||
            this.lblVersion.Location = new System.Drawing.Point(83, 61);
 | 
			
		||||
            this.lblVersion.Name = "lblVersion";
 | 
			
		||||
            this.lblVersion.Size = new System.Drawing.Size(35, 12);
 | 
			
		||||
            this.lblVersion.Size = new System.Drawing.Size(0, 12);
 | 
			
		||||
            this.lblVersion.TabIndex = 10;
 | 
			
		||||
            this.lblVersion.Text = "0.0.1";
 | 
			
		||||
            // 
 | 
			
		||||
            // lblVersionTag
 | 
			
		||||
            // 
 | 
			
		||||
| 
						 | 
				
			
			@ -201,11 +201,22 @@
 | 
			
		|||
            this.panelMask.TabIndex = 17;
 | 
			
		||||
            this.panelMask.Visible = false;
 | 
			
		||||
            // 
 | 
			
		||||
            // rbtQQLite
 | 
			
		||||
            // 
 | 
			
		||||
            this.rbtQQLite.AutoSize = true;
 | 
			
		||||
            this.rbtQQLite.Location = new System.Drawing.Point(235, 7);
 | 
			
		||||
            this.rbtQQLite.Name = "rbtQQLite";
 | 
			
		||||
            this.rbtQQLite.Size = new System.Drawing.Size(71, 16);
 | 
			
		||||
            this.rbtQQLite.TabIndex = 18;
 | 
			
		||||
            this.rbtQQLite.Text = "QQ轻聊版";
 | 
			
		||||
            this.rbtQQLite.UseVisualStyleBackColor = true;
 | 
			
		||||
            // 
 | 
			
		||||
            // FormMain
 | 
			
		||||
            // 
 | 
			
		||||
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
 | 
			
		||||
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
 | 
			
		||||
            this.ClientSize = new System.Drawing.Size(490, 110);
 | 
			
		||||
            this.Controls.Add(this.rbtQQLite);
 | 
			
		||||
            this.Controls.Add(this.lblUpdatePachJson);
 | 
			
		||||
            this.Controls.Add(this.panelMask);
 | 
			
		||||
            this.Controls.Add(this.lblVersion);
 | 
			
		||||
| 
						 | 
				
			
			@ -248,6 +259,7 @@
 | 
			
		|||
        private System.Windows.Forms.RadioButton rbtTIM;
 | 
			
		||||
        private System.Windows.Forms.Label label5;
 | 
			
		||||
        private System.Windows.Forms.Panel panelMask;
 | 
			
		||||
        private System.Windows.Forms.RadioButton rbtQQLite;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@ namespace RevokeMsgPatcher
 | 
			
		|||
        private WechatModifier wechatModifier = null;
 | 
			
		||||
        private QQModifier qqModifier = null;
 | 
			
		||||
        private TIMModifier timModifier = null;
 | 
			
		||||
        private QQLiteModifier qqLiteModifier = null;
 | 
			
		||||
 | 
			
		||||
        private string thisVersion;
 | 
			
		||||
        private bool needUpdate = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -35,10 +36,12 @@ namespace RevokeMsgPatcher
 | 
			
		|||
            wechatModifier = new WechatModifier(bag.Apps["Wechat"]);
 | 
			
		||||
            qqModifier = new QQModifier(bag.Apps["QQ"]);
 | 
			
		||||
            timModifier = new TIMModifier(bag.Apps["TIM"]);
 | 
			
		||||
            qqLiteModifier = new QQLiteModifier(bag.Apps["QQLite"]);
 | 
			
		||||
 | 
			
		||||
            rbtWechat.Tag = wechatModifier;
 | 
			
		||||
            rbtQQ.Tag = qqModifier;
 | 
			
		||||
            rbtTIM.Tag = timModifier;
 | 
			
		||||
            rbtQQLite.Tag = qqLiteModifier;
 | 
			
		||||
 | 
			
		||||
            // 默认微信
 | 
			
		||||
            rbtWechat.Enabled = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -68,11 +71,12 @@ namespace RevokeMsgPatcher
 | 
			
		|||
        {
 | 
			
		||||
            // 自动获取应用安装路径
 | 
			
		||||
            txtPath.Text = modifier.FindInstallPath();
 | 
			
		||||
            lblVersion.Text = modifier.GetVersion();
 | 
			
		||||
            btnRestore.Enabled = false;
 | 
			
		||||
            // 显示是否能够备份还原
 | 
			
		||||
            if (!string.IsNullOrEmpty(txtPath.Text))
 | 
			
		||||
            {
 | 
			
		||||
                modifier.InitEditors(txtPath.Text);
 | 
			
		||||
                lblVersion.Text = modifier.GetVersion();
 | 
			
		||||
                btnRestore.Enabled = modifier.BackupExists();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -169,6 +173,14 @@ namespace RevokeMsgPatcher
 | 
			
		|||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    txtPath.Text = dialog.SelectedPath;
 | 
			
		||||
                    btnRestore.Enabled = false;
 | 
			
		||||
                    // 显示是否能够备份还原
 | 
			
		||||
                    if (!string.IsNullOrEmpty(txtPath.Text))
 | 
			
		||||
                    {
 | 
			
		||||
                        modifier.InitEditors(txtPath.Text);
 | 
			
		||||
                        lblVersion.Text = modifier.GetVersion();
 | 
			
		||||
                        btnRestore.Enabled = modifier.BackupExists();
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -214,6 +226,7 @@ namespace RevokeMsgPatcher
 | 
			
		|||
                    wechatModifier.Config = bag.Apps["Wechat"];
 | 
			
		||||
                    qqModifier.Config = bag.Apps["QQ"];
 | 
			
		||||
                    timModifier.Config = bag.Apps["TIM"];
 | 
			
		||||
                    qqLiteModifier.Config = bag.Apps["QQLite"];
 | 
			
		||||
 | 
			
		||||
                    if (Convert.ToDecimal(bag.LatestVersion) > Convert.ToDecimal(thisVersion))
 | 
			
		||||
                    {
 | 
			
		||||
| 
						 | 
				
			
			@ -266,6 +279,7 @@ namespace RevokeMsgPatcher
 | 
			
		|||
            tips += "支持以下版本" + Environment.NewLine;
 | 
			
		||||
            tips += " ➯ 微信:" + wechatModifier.Config.GetSupportVersionStr() + Environment.NewLine;
 | 
			
		||||
            tips += " ➯ QQ:" + qqModifier.Config.GetSupportVersionStr() + Environment.NewLine;
 | 
			
		||||
            tips += " ➯ QQ轻聊版:" + qqLiteModifier.Config.GetSupportVersionStr() + Environment.NewLine;
 | 
			
		||||
            tips += " ➯ TIM:" + timModifier.Config.GetSupportVersionStr() + Environment.NewLine;
 | 
			
		||||
 | 
			
		||||
            DialogResult dr = MessageBox.Show(tips, "当前支持防撤回的版本", MessageBoxButtons.OKCancel);
 | 
			
		||||
| 
						 | 
				
			
			@ -292,14 +306,20 @@ namespace RevokeMsgPatcher
 | 
			
		|||
            {
 | 
			
		||||
                modifier = (TIMModifier)rbtTIM.Tag;
 | 
			
		||||
            }
 | 
			
		||||
            else if (rbtQQLite.Checked)
 | 
			
		||||
            {
 | 
			
		||||
                modifier = (QQLiteModifier)rbtQQLite.Tag;
 | 
			
		||||
            }
 | 
			
		||||
            txtPath.Text = modifier.FindInstallPath();
 | 
			
		||||
            lblVersion.Text = modifier.GetVersion();
 | 
			
		||||
            ga.RequestPageView($"{GetCheckedRadioButtonNameEn()}/{lblVersion.Text}/switch", "切换标签页");
 | 
			
		||||
            EnableAllButton(true);
 | 
			
		||||
            lblVersion.Text = "";
 | 
			
		||||
            btnRestore.Enabled = false;
 | 
			
		||||
            // 显示是否能够备份还原
 | 
			
		||||
            if (!string.IsNullOrEmpty(txtPath.Text))
 | 
			
		||||
            {
 | 
			
		||||
                modifier.InitEditors(txtPath.Text);
 | 
			
		||||
                lblVersion.Text = modifier.GetVersion();
 | 
			
		||||
                btnRestore.Enabled = modifier.BackupExists();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -318,6 +338,10 @@ namespace RevokeMsgPatcher
 | 
			
		|||
            {
 | 
			
		||||
                return "tim";
 | 
			
		||||
            }
 | 
			
		||||
            else if (rbtQQLite.Checked)
 | 
			
		||||
            {
 | 
			
		||||
                return "qqlite";
 | 
			
		||||
            }
 | 
			
		||||
            return "none";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										56
									
								
								RevokeMsgPatcher/Modifier/QQLiteModifier.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								RevokeMsgPatcher/Modifier/QQLiteModifier.cs
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
using RevokeMsgPatcher.Model;
 | 
			
		||||
using RevokeMsgPatcher.Utils;
 | 
			
		||||
 | 
			
		||||
namespace RevokeMsgPatcher.Modifier
 | 
			
		||||
{
 | 
			
		||||
    class QQLiteModifier : AppModifier
 | 
			
		||||
    {
 | 
			
		||||
        public QQLiteModifier(App config)
 | 
			
		||||
        {
 | 
			
		||||
            this.config = config;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 自动寻找获取微信安装路径
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public override string FindInstallPath()
 | 
			
		||||
        {
 | 
			
		||||
            string installPath = PathUtil.FindInstallPathFromRegistry("QQLite");
 | 
			
		||||
            if (!IsAllFilesExist(installPath))
 | 
			
		||||
            {
 | 
			
		||||
                foreach (string defaultPath in PathUtil.GetDefaultInstallPaths(@"Tencent\QQLite"))
 | 
			
		||||
                {
 | 
			
		||||
                    if (IsAllFilesExist(defaultPath))
 | 
			
		||||
                    {
 | 
			
		||||
                        return defaultPath;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                return installPath;
 | 
			
		||||
            }
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 获取整个APP的当前版本
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public override string GetVersion()
 | 
			
		||||
        {
 | 
			
		||||
            if (editors != null && editors.Count > 0)
 | 
			
		||||
            {
 | 
			
		||||
                foreach (FileHexEditor editor in editors)
 | 
			
		||||
                {
 | 
			
		||||
                    if (editor.FileName == "IM.dll")
 | 
			
		||||
                    {
 | 
			
		||||
                        return editor.FileVersion;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            return "";
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -16,7 +16,7 @@ namespace RevokeMsgPatcher.Modifier
 | 
			
		|||
        /// <returns></returns>
 | 
			
		||||
        public override string FindInstallPath()
 | 
			
		||||
        {
 | 
			
		||||
            string installPath = PathUtil.FindInstallPathFromRegistry("{052CFB79-9D62-42E3-8A15-DE66C2C97C3E} ");
 | 
			
		||||
            string installPath = PathUtil.FindInstallPathFromRegistry("{052CFB79-9D62-42E3-8A15-DE66C2C97C3E}");
 | 
			
		||||
            if (!IsAllFilesExist(installPath))
 | 
			
		||||
            {
 | 
			
		||||
                foreach (string defaultPath in PathUtil.GetDefaultInstallPaths(@"Tencent\QQ"))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
						 | 
				
			
			@ -64,6 +64,7 @@
 | 
			
		|||
    <Compile Include="Model\TargetInfo.cs" />
 | 
			
		||||
    <Compile Include="Modifier\AppModifier.cs" />
 | 
			
		||||
    <Compile Include="Modifier\FileHexEditor.cs" />
 | 
			
		||||
    <Compile Include="Modifier\QQLiteModifier.cs" />
 | 
			
		||||
    <Compile Include="Modifier\QQModifier.cs" />
 | 
			
		||||
    <Compile Include="Modifier\TIMModifier.cs" />
 | 
			
		||||
    <Compile Include="Modifier\WechatModifier.cs" />
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user