SYMBOL INDEX (285 symbols across 60 files) FILE: RevokeMsgPatcher.Assistant/FormAssisant.Designer.cs class FormAssisant (line 3) | partial class FormAssisant method Dispose (line 14) | protected override void Dispose(bool disposing) method InitializeComponent (line 29) | private void InitializeComponent() FILE: RevokeMsgPatcher.Assistant/FormAssisant.cs class FormAssisant (line 12) | public partial class FormAssisant : Form method FormAssisant (line 14) | public FormAssisant() method FormMain_Load (line 19) | private void FormMain_Load(object sender, EventArgs e) method btnSearch_Click (line 36) | private void btnSearch_Click(object sender, EventArgs e) method ComputChanges (line 54) | public static List ComputChanges(int[] indexs, byte[] searchBy... method btnGetVersion_Click (line 112) | private void btnGetVersion_Click(object sender, EventArgs e) FILE: RevokeMsgPatcher.Assistant/JsonData.cs class JsonData (line 11) | public class JsonData method Bag (line 14) | public Bag Bag() method BagJson (line 26) | public string BagJson() method AppConfig (line 32) | public Dictionary AppConfig() method AppConfigJson (line 45) | public string AppConfigJson() method Wechat (line 51) | public App Wechat() method QQ (line 846) | public App QQ() method TIM (line 1187) | public App TIM() method QQLite (line 1303) | public App QQLite() method QQNT (line 1372) | public App QQNT() method Weixin (line 1416) | public App Weixin() FILE: RevokeMsgPatcher.Assistant/Program.cs class Program (line 9) | static class Program method Main (line 14) | [STAThread] FILE: RevokeMsgPatcher.Assistant/Properties/Resources.Designer.cs class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource... method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic... FILE: RevokeMsgPatcher.Assistant/Properties/Settings.Designer.cs class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] FILE: RevokeMsgPatcher.Launcher/FormMain.Designer.cs class FormMain (line 3) | partial class FormMain method Dispose (line 14) | protected override void Dispose(bool disposing) method InitializeComponent (line 29) | private void InitializeComponent() FILE: RevokeMsgPatcher.Launcher/FormMain.cs class FormMain (line 13) | public partial class FormMain : Form method FormMain (line 15) | public FormMain() FILE: RevokeMsgPatcher.Launcher/Program.cs class Program (line 9) | internal static class Program method Main (line 14) | [STAThread] FILE: RevokeMsgPatcher.Launcher/Properties/Resources.Designer.cs class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource... method Resources (line 32) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic... FILE: RevokeMsgPatcher.Launcher/Properties/Settings.Designer.cs class Settings (line 15) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] FILE: RevokeMsgPatcher.MultiInstance/FormMultiInstance.Designer.cs class FormMultiInstance (line 3) | partial class FormMultiInstance method Dispose (line 14) | protected override void Dispose(bool disposing) method InitializeComponent (line 29) | private void InitializeComponent() FILE: RevokeMsgPatcher.MultiInstance/FormMultiInstance.cs class FormMultiInstance (line 8) | public partial class FormMultiInstance : Form method FormMultiInstance (line 10) | public FormMultiInstance() method linkLabel1_LinkClicked (line 23) | private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClicke... method btnStartTimer_Click (line 28) | private void btnStartTimer_Click(object sender, EventArgs e) method btnStopTimer_Click (line 35) | private void btnStopTimer_Click(object sender, EventArgs e) method mutexHandleCloseTimer_Tick (line 44) | private void mutexHandleCloseTimer_Tick(object sender, EventArgs e) method btnKillAll_Click (line 92) | private void btnKillAll_Click(object sender, EventArgs e) method btnCloseAllMutex_Click (line 109) | private void btnCloseAllMutex_Click(object sender, EventArgs e) method lblHowToUse_LinkClicked (line 115) | private void lblHowToUse_LinkClicked(object sender, LinkLabelLinkClick... method FormMultiInstance_FormClosed (line 120) | private void FormMultiInstance_FormClosed(object sender, FormClosedEve... FILE: RevokeMsgPatcher.MultiInstance/ProcessUtil.cs class ProcessUtil (line 19) | public class ProcessUtil type SYSTEM_HANDLE_INFORMATION (line 24) | [StructLayout(LayoutKind.Sequential, Pack = 1)] type OBJECT_INFORMATION_CLASS (line 36) | private enum OBJECT_INFORMATION_CLASS : int type OBJECT_NAME_INFORMATION (line 45) | [StructLayout(LayoutKind.Sequential, Pack = 1)] type UNICODE_STRING (line 51) | [StructLayout(LayoutKind.Sequential)] type PROCESS_ACCESS_FLAGS (line 59) | [Flags] method NtQuerySystemInformation (line 74) | [DllImport("ntdll.dll")] method OpenProcess (line 77) | [DllImport("kernel32.dll")] method DuplicateHandle (line 80) | [DllImport("kernel32.dll", SetLastError = true)] method GetCurrentProcess (line 84) | [DllImport("kernel32.dll")] method NtQueryObject (line 87) | [DllImport("ntdll.dll")] method CloseHandle (line 90) | [DllImport("kernel32.dll")] method GetHandleInformation (line 93) | [DllImport("kernel32.dll")] method GetHandles (line 103) | public static List GetHandles(Process process) method FindAndCloseWeChatMutexHandle (line 143) | public static bool FindAndCloseWeChatMutexHandle(SYSTEM_HANDLE_INFORMA... method CloseMutexHandle (line 210) | public static void CloseMutexHandle(Process[] processes) method CloseMutexHandle (line 218) | public static bool CloseMutexHandle(Process process) FILE: RevokeMsgPatcher.MultiInstance/Program.cs class Program (line 9) | static class Program method Main (line 14) | [STAThread] FILE: RevokeMsgPatcher.MultiInstance/Properties/Resources.Designer.cs class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource... method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic... FILE: RevokeMsgPatcher.MultiInstance/Properties/Settings.Designer.cs class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] FILE: RevokeMsgPatcher.MultiInstance/WechatProcess.cs class WechatProcess (line 5) | public class WechatProcess method WechatProcess (line 11) | public WechatProcess(Process p) FILE: RevokeMsgPatcher/BusinessException.cs class BusinessException (line 5) | class BusinessException : ApplicationException method BusinessException (line 9) | public BusinessException(string errcode, string message) : base(message) FILE: RevokeMsgPatcher/FormMain.Designer.cs class FormMain (line 3) | partial class FormMain method Dispose (line 14) | protected override void Dispose(bool disposing) method InitializeComponent (line 29) | private void InitializeComponent() FILE: RevokeMsgPatcher/FormMain.cs class FormMain (line 16) | public partial class FormMain : Form method InitModifier (line 38) | public void InitModifier() method FormMain (line 64) | public FormMain() method InitControls (line 84) | private void InitControls() method InitEditorsAndUI (line 92) | private void InitEditorsAndUI(string path) method btnPatch_Click (line 126) | private void btnPatch_Click(object sender, EventArgs e) method txtPath_TextChanged (line 251) | private void txtPath_TextChanged(object sender, EventArgs e) method btnChoosePath_Click (line 266) | private void btnChoosePath_Click(object sender, EventArgs e) method btnRestore_Click (line 285) | private void btnRestore_Click(object sender, EventArgs e) method linkLabel1_LinkClicked (line 316) | private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClicke... method FormMain_Load (line 321) | private async void FormMain_Load(object sender, EventArgs e) method lblUpdatePachJson_Click (line 381) | private void lblUpdatePachJson_Click(object sender, EventArgs e) method radioButtons_CheckedChanged (line 404) | private void radioButtons_CheckedChanged(object sender, EventArgs e) method ShowOrFocusFormLiteLoaderQQNT (line 449) | private void ShowOrFocusFormLiteLoaderQQNT() method GetCheckedRadioButtonNameEn (line 467) | private string GetCheckedRadioButtonNameEn() method EnableAllButton (line 493) | private void EnableAllButton(bool state) method 关于ToolStripMenuItem_Click (line 504) | private void 关于ToolStripMenuItem_Click(object sender, EventArgs e) method 主页ToolStripMenuItem_Click (line 509) | private void 主页ToolStripMenuItem_Click(object sender, EventArgs e) method 支持版本ToolStripMenuItem_Click (line 514) | private void 支持版本ToolStripMenuItem_Click(object sender, EventArgs e) method 常见问题ToolStripMenuItem_Click (line 519) | private void 常见问题ToolStripMenuItem_Click(object sender, EventArgs e) method 防撤回原理ToolStripMenuItem_Click (line 524) | private void 防撤回原理ToolStripMenuItem_Click(object sender, EventArgs e) method 完整文档ToolStripMenuItem_Click (line 529) | private void 完整文档ToolStripMenuItem_Click(object sender, EventArgs e) method 特征码防撤回强制ToolStripMenuItem_Click (line 534) | private void 特征码防撤回强制ToolStripMenuItem_Click(object sender, EventArgs e) method 手动输入补丁信息ToolStripMenuItem_Click (line 539) | private void 手动输入补丁信息ToolStripMenuItem_Click(object sender, EventArgs e) method 通用微信多开工具ToolStripMenuItem_Click (line 544) | private void 通用微信多开工具ToolStripMenuItem_Click(object sender, EventArgs e) method InitNoticeControls (line 565) | private void InitNoticeControls(Bag b) method labelNotice_MouseClick (line 592) | private void labelNotice_MouseClick(object sender, MouseEventArgs e) FILE: RevokeMsgPatcher/Forms/FormLiteLoaderQQNT.Designer.cs class FormLiteLoaderQQNT (line 3) | partial class FormLiteLoaderQQNT method Dispose (line 14) | protected override void Dispose(bool disposing) method InitializeComponent (line 29) | private void InitializeComponent() FILE: RevokeMsgPatcher/Forms/FormLiteLoaderQQNT.cs class FormLiteLoaderQQNT (line 16) | public partial class FormLiteLoaderQQNT : Form method FormLiteLoaderQQNT (line 20) | public FormLiteLoaderQQNT() method InitCboProxyList (line 29) | private void InitCboProxyList() method InitializeDataGridView (line 50) | private void InitializeDataGridView() method InitData (line 71) | private List InitData() method AddRow (line 122) | private void AddRow(LiteLoaderRowData rowData) method DataGridView1_CellClick (line 158) | private void DataGridView1_CellClick(object sender, DataGridViewCellEv... method btnCheckUpdateAll_Click (line 182) | private void btnCheckUpdateAll_Click(object sender, EventArgs e) method btnRestore_Click (line 191) | private void btnRestore_Click(object sender, EventArgs e) method RestoreDll (line 221) | private void RestoreDll(string installPath) method RestorePackageJson (line 230) | private void RestorePackageJson(string appPath) method btnPath_Click (line 249) | private void btnPath_Click(object sender, EventArgs e) method MoveDll (line 294) | private void MoveDll(string installPath) method GetAppPath (line 311) | private string GetAppPath(string installPath) method CreateLauncherFile (line 344) | private void CreateLauncherFile(string appPath) method ModifyPackageJson (line 370) | private void ModifyPackageJson(string appPath) method btnChoose_Click (line 401) | private void btnChoose_Click(object sender, EventArgs e) method FindInstallPath (line 422) | public string FindInstallPath() method IsAllFilesExist (line 461) | private bool IsAllFilesExist(string installPath) FILE: RevokeMsgPatcher/Forms/FormPatchInfo.Designer.cs class FormPatchInfo (line 3) | partial class FormPatchInfo method Dispose (line 14) | protected override void Dispose(bool disposing) method InitializeComponent (line 29) | private void InitializeComponent() FILE: RevokeMsgPatcher/Forms/FormPatchInfo.cs class FormPatchInfo (line 13) | public partial class FormPatchInfo : Form method FormPatchInfo (line 15) | public FormPatchInfo() FILE: RevokeMsgPatcher/Forms/UIController.cs class UIController (line 11) | public class UIController method AddCategoryCheckBoxToPanel (line 13) | public static void AddCategoryCheckBoxToPanel(Panel panel, string[] ca... method AddMsgToPanel (line 41) | public static void AddMsgToPanel(Panel panel, string msg) method GetCategoriesFromPanel (line 54) | public static List GetCategoriesFromPanel(Panel panel) FILE: RevokeMsgPatcher/Matcher/BoyerMooreMatcher.cs class BoyerMooreMatcher (line 3) | public class BoyerMooreMatcher method Max (line 7) | private static int Max(int a, int b) { return (a > b) ? a : b; } method PreprocessToBuildBadCharactorHeuristic (line 9) | static int[] PreprocessToBuildBadCharactorHeuristic(byte[] pattern) method PreprocessToBuildGoodSuffixHeuristic (line 30) | static int[] PreprocessToBuildGoodSuffixHeuristic(byte[] pattern) method GetSuffixLengthArray (line 64) | static int[] GetSuffixLengthArray(byte[] pattern) method TryMatch (line 100) | public static bool TryMatch(byte[] text, byte[] pattern, out int first... method MatchAll (line 148) | public static int[] MatchAll(byte[] text, byte[] pattern) FILE: RevokeMsgPatcher/Matcher/FuzzyMatcher.cs class FuzzyMatcher (line 10) | public class FuzzyMatcher method MatchAll (line 20) | public static int[] MatchAll(byte[] content, byte[] pattern) method MatchNotReplaced (line 50) | public static int[] MatchNotReplaced(byte[] content, byte[] searchByte... method GetHead (line 84) | private static byte[] GetHead(byte[] whole) method IsEqual (line 109) | public static bool IsEqual(byte[] content, int start, byte[] whole) FILE: RevokeMsgPatcher/Matcher/ModifyFinder.cs class ModifyFinder (line 10) | public class ModifyFinder method FindChanges (line 13) | public static List FindChanges(string path, List FindReplacedFunction(string path, List... method IsAllReplaced (line 102) | private static Tuple> IsAllReplaced(byte[] par... FILE: RevokeMsgPatcher/Model/App.cs class App (line 9) | public class App method GetSupportVersions (line 22) | public HashSet GetSupportVersions() method GetSupportVersionStr (line 52) | public string GetSupportVersionStr() FILE: RevokeMsgPatcher/Model/Bag.cs class Bag (line 9) | public class Bag FILE: RevokeMsgPatcher/Model/Change.cs class Change (line 9) | public class Change method Change (line 15) | public Change() method Change (line 20) | public Change(long position, byte[] content) method Clone (line 26) | public Change Clone() FILE: RevokeMsgPatcher/Model/CommonModifyInfo.cs class CommonModifyInfo (line 10) | public class CommonModifyInfo method Clone (line 21) | public CommonModifyInfo Clone() method GetCategories (line 36) | public List GetCategories() FILE: RevokeMsgPatcher/Model/Json/LiteLoaderPackage.cs class LiteLoaderPackage (line 9) | internal class LiteLoaderPackage FILE: RevokeMsgPatcher/Model/Json/LiteLoaderPluginsManifest.cs class LiteLoaderPluginsManifest (line 8) | internal class LiteLoaderPluginsManifest FILE: RevokeMsgPatcher/Model/Json/ReleaseApiRes.cs class ReleaseApiRes (line 6) | internal class ReleaseApiRes class Asset (line 28) | public class Asset FILE: RevokeMsgPatcher/Model/Json/VersionJson.cs class VersionJson (line 3) | internal class VersionJson FILE: RevokeMsgPatcher/Model/LiteLoaderRowData.cs class LiteLoaderRowData (line 16) | internal class LiteLoaderRowData method UpdateStatus (line 47) | private void UpdateStatus(string newStatus) method GetLocalVersion (line 85) | public string GetLocalVersion() method GetLocalVersionAndUpdateStatus (line 110) | public void GetLocalVersionAndUpdateStatus() method GetRemoteVersion (line 130) | public async Task GetRemoteVersion(string proxyUrl) method FormatUrl (line 147) | private string FormatUrl(string proxyUrl, string target) method CheckAndUpdate (line 171) | public async Task CheckAndUpdate(string proxyUrl = null) method FindDirectoryWithJson (line 243) | private string FindDirectoryWithJson(string extractPath, int maxDepth ... method FindDirectoryWithJsonRecursive (line 248) | private string FindDirectoryWithJsonRecursive(string currentPath, int ... method DownloadLatestPackage (line 279) | private async Task DownloadLatestPackage(string url, string lo... method DirectoryCopy (line 300) | private void DirectoryCopy(string sourceDirName, string destDirName, b... FILE: RevokeMsgPatcher/Model/ModifyInfo.cs class ModifyInfo (line 10) | public class ModifyInfo method Clone (line 22) | public ModifyInfo Clone() FILE: RevokeMsgPatcher/Model/ReplacePattern.cs class ReplacePattern (line 5) | public class ReplacePattern method Clone (line 28) | public ReplacePattern Clone() FILE: RevokeMsgPatcher/Model/TargetInfo.cs class TargetInfo (line 10) | public class TargetInfo method Clone (line 27) | public TargetInfo Clone() method GetAbsolutePath (line 36) | public string GetAbsolutePath(string installPath) FILE: RevokeMsgPatcher/Modifier/AppModifier.cs class AppModifier (line 21) | public abstract class AppModifier method FindInstallPath (line 39) | public abstract string FindInstallPath(); method GetVersion (line 47) | public abstract string GetVersion(); method SetVersionLabelAndCategoryCategories (line 53) | public void SetVersionLabelAndCategoryCategories(Label label, Panel pa... method IsAllFilesExist (line 159) | public bool IsAllFilesExist(string installPath) method IsInVersionRange (line 197) | public bool IsInVersionRange(string version, string start, string end) method FindCommonModifyInfo (line 218) | private CommonModifyInfo FindCommonModifyInfo(FileHexEditor editor) method EditorsHasCommonModifyInfos (line 237) | [Obsolete] method InitEditors (line 263) | public bool InitEditors(string installPath) method ValidateAndFindModifyInfo (line 295) | public void ValidateAndFindModifyInfo(List categories) method Patch (line 387) | public bool Patch() method BackupExists (line 444) | public bool BackupExists() method Restore (line 457) | public bool Restore() method AfterPatchSuccess (line 495) | public abstract void AfterPatchSuccess(); method AfterPatchFail (line 497) | public abstract void AfterPatchFail(); FILE: RevokeMsgPatcher/Modifier/FileHexEditor.cs class FileHexEditor (line 8) | public class FileHexEditor method FileHexEditor (line 70) | public FileHexEditor(string installPath, TargetInfo target) method Backup (line 86) | public void Backup() method Patch (line 107) | public bool Patch() method Restore (line 121) | public void Restore() FILE: RevokeMsgPatcher/Modifier/QQLiteModifier.cs class QQLiteModifier (line 8) | class QQLiteModifier : AppModifier method QQLiteModifier (line 10) | public QQLiteModifier(App config) method AfterPatchSuccess (line 15) | public override void AfterPatchSuccess() method AfterPatchFail (line 19) | public override void AfterPatchFail() method FindInstallPath (line 27) | public override string FindInstallPath() method GetVersion (line 59) | public override string GetVersion() FILE: RevokeMsgPatcher/Modifier/QQModifier.cs class QQModifier (line 8) | class QQModifier : AppModifier method QQModifier (line 10) | public QQModifier(App config) method AfterPatchSuccess (line 15) | public override void AfterPatchSuccess() method AfterPatchFail (line 19) | public override void AfterPatchFail() method FindInstallPath (line 27) | public override string FindInstallPath() method GetVersion (line 59) | public override string GetVersion() FILE: RevokeMsgPatcher/Modifier/QQNTModifier.cs class QQNTModifier (line 12) | class QQNTModifier : AppModifier method QQNTModifier (line 14) | public QQNTModifier(App config) method FindInstallPath (line 23) | public override string FindInstallPath() method GetVersion (line 66) | public override string GetVersion() method AfterPatchSuccess (line 81) | public override void AfterPatchSuccess() method AfterPatchFail (line 86) | public override void AfterPatchFail() method Restore (line 91) | public new bool Restore() FILE: RevokeMsgPatcher/Modifier/TIMModifier.cs class TIMModifier (line 6) | class TIMModifier : AppModifier method TIMModifier (line 9) | public TIMModifier(App config) method AfterPatchSuccess (line 14) | public override void AfterPatchSuccess() method AfterPatchFail (line 18) | public override void AfterPatchFail() method FindInstallPath (line 26) | public override string FindInstallPath() method GetVersion (line 50) | public override string GetVersion() FILE: RevokeMsgPatcher/Modifier/WechatModifier.cs class WechatModifier (line 9) | class WechatModifier : AppModifier method WechatModifier (line 12) | public WechatModifier(App config) method AfterPatchSuccess (line 17) | public override void AfterPatchSuccess() method AfterPatchFail (line 21) | public override void AfterPatchFail() method FindInstallPath (line 29) | public override string FindInstallPath() method GetRealInstallPath (line 64) | private string GetRealInstallPath(string basePath) method GetVersion (line 91) | public override string GetVersion() FILE: RevokeMsgPatcher/Modifier/WeixinModifier.cs class WeixinModifier (line 9) | class WeixinModifier : AppModifier method WeixinModifier (line 12) | public WeixinModifier(App config) method AfterPatchSuccess (line 17) | public override void AfterPatchSuccess() method AfterPatchFail (line 21) | public override void AfterPatchFail() method FindInstallPath (line 29) | public override string FindInstallPath() method GetRealInstallPath (line 69) | private string GetRealInstallPath(string basePath) method GetVersion (line 92) | public override string GetVersion() FILE: RevokeMsgPatcher/Program.cs class Program (line 9) | static class Program method Main (line 14) | [STAThread] method Application_ThreadException (line 70) | static void Application_ThreadException(object sender, System.Threadin... method CurrentDomain_UnhandledException (line 75) | static void CurrentDomain_UnhandledException(object sender, UnhandledE... FILE: RevokeMsgPatcher/Properties/Resources.Designer.cs class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource... method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic... FILE: RevokeMsgPatcher/Properties/Settings.Designer.cs class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] FILE: RevokeMsgPatcher/Utils/ByteUtil.cs class ByteUtil (line 9) | public class ByteUtil method HexStringToByteArray (line 11) | public static byte[] HexStringToByteArray(string hex) method ByteArrayToHexString (line 21) | public static string ByteArrayToHexString(byte[] data) FILE: RevokeMsgPatcher/Utils/Device.cs class Device (line 11) | public class Device method Value (line 51) | public static string Value() method GetHash (line 70) | private static string GetHash(string s) method GetHexString (line 78) | private static string GetHexString(byte[] bt) method ObtainMacID (line 104) | public static string ObtainMacID() method Identifier (line 109) | private static string Identifier(string wmiClass, string wmiProperty, ... method Identifier (line 135) | private static string Identifier(string wmiClass, string wmiProperty) FILE: RevokeMsgPatcher/Utils/FileUtil.cs class FileUtil (line 10) | public class FileUtil method GetFileVersion (line 17) | public static string GetFileVersion(string path) method ComputeFileSHA1 (line 36) | public static string ComputeFileSHA1(string s) method EditHex (line 59) | public static bool EditHex(string path, long position, byte after) method EditMultiHex (line 75) | public static void EditMultiHex(string path, List changes) FILE: RevokeMsgPatcher/Utils/GAHelper.cs class GAHelper (line 21) | public class GAHelper method GAHelper (line 51) | public GAHelper() method RequestPageViewAsync (line 56) | public async Task RequestPageViewAsync(string page, string title = null) method RequestPageView (line 101) | public void RequestPageView(string page, string title = null) FILE: RevokeMsgPatcher/Utils/HttpUtil.cs class HttpUtil (line 8) | public class HttpUtil method HttpUtil (line 12) | static HttpUtil() method GetPatchJsonAsync (line 52) | public static async Task GetPatchJsonAsync() FILE: RevokeMsgPatcher/Utils/PathUtil.cs class PathUtil (line 11) | public class PathUtil method DisplayAllProgram (line 13) | public static void DisplayAllProgram() method FindInstallPathFromRegistry (line 38) | public static string FindInstallPathFromRegistry(string uninstallKeyName) method FindInstallPathFromRegistryWOW6432Node (line 64) | public static string FindInstallPathFromRegistryWOW6432Node(string uni... method GetDefaultInstallPaths (line 94) | public static List GetDefaultInstallPaths(string relativePath) method SortByLastWriteTimeDesc (line 123) | public static void SortByLastWriteTimeDesc(ref DirectoryInfo[] dirs) FILE: RevokeMsgPatcher/Utils/ProxySpeedTester.cs class ProxySpeedTester (line 10) | public class ProxySpeedTester method GetFastestProxyAsync (line 32) | public static async Task> GetFastestProxyAsync(s... method GetFastestProxyAsync (line 37) | public static async Task> GetFastestProxyAsync(L... method TestProxyAsync (line 69) | private static async Task> TestProxyAsync(... FILE: RevokeMsgPatcher/Utils/VersionUtil.cs class VersionUtil (line 9) | public class VersionUtil method Compare (line 21) | public static int Compare(string v1, string v2)