[+] 重新架构逻辑

This commit is contained in:
huiyadanli
2019-09-18 09:08:32 +08:00
parent 90076240b1
commit 92594da959
13 changed files with 304 additions and 41 deletions

View File

@@ -0,0 +1,56 @@
using RevokeMsgPatcher.Model;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RevokeMsgPatcher.Modifier
{
public abstract class AppModifier
{
private App config;
private List<FileHexEditor> editors;
// 1. 获取安装目录
// 2. 验证安装目录 通过 BinaryFiles
// 3. 判断所有 BinaryFiles 是否符合防撤回要求
// 4. 备份所有 BinaryFiles // *.h.bak
// 5. 对每个 BinaryFile 中的 Changes 循环修改(修改前要测试它的读写性质,是否被程序占用等)
// 获取版本号
// 通过SHA1判断是否可以进行16进制编辑 先判断版本号 再判断SHA1 根据不同结果返回不同的提示
// ?多文件的备份回退 // 暂定有一个备份文件就点亮按钮
public abstract string FindInstallPath();
//public abstract bool ValidateInstallPath();
public abstract bool GetVersion();
public bool IsAllBinaryFilesExist(string installPath)
{
int success = 0;
foreach(string relativePath in config.ModifyFilePaths)
{
string filePath = Path.Combine(installPath, relativePath);
if(File.Exists(filePath))
{
success++;
}
}
if(success == config.ModifyFilePaths.Length)
{
return true;
}
else
{
return false;
}
}
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RevokeMsgPatcher.Modifier
{
public class FileHexEditor
{
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RevokeMsgPatcher.Modifier
{
class QQModifier
{
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RevokeMsgPatcher.Modifier
{
class TIMModifier
{
}
}

View File

@@ -0,0 +1,37 @@
using RevokeMsgPatcher.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RevokeMsgPatcher.Modifier
{
class WechatModifier : AppModifier
{
public override string FindInstallPath()
{
string installPath = PathUtil.FindInstallPathFromRegistry("Wecaht");
if(!IsAllBinaryFilesExist(installPath))
{
foreach(string defaultPath in PathUtil.GetDefaultInstallPaths(@"Tencent\Wechat"))
{
if(IsAllBinaryFilesExist(defaultPath))
{
return defaultPath;
}
}
}
else
{
return installPath;
}
return null;
}
public override bool GetVersion()
{
throw new NotImplementedException();
}
}
}