From 61169a28d7b047dc434ca77222d613e43fe3fc49 Mon Sep 17 00:00:00 2001 From: HirotaZX <55805734+HirotaZX@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:55:30 +0800 Subject: [PATCH] Sharky Patcher 2.0 --- .github/workflows/build.yml | 25 ++ FFXIVSharkyPatcher.sln | 25 ++ README.md | 36 ++ RELEASE.md | 10 + SharkyPatcher/.gitignore | 9 + SharkyPatcher/App.cs | 210 ++++++++++ SharkyPatcher/Common/DalamudVersionInfo.cs | 13 + SharkyPatcher/Common/LoggerUtil.cs | 71 ++++ SharkyPatcher/Common/SharkyArt.cs | 65 +++ SharkyPatcher/FodyWeavers.xml | 4 + SharkyPatcher/Patcher/BasePatcher.cs | 68 +++ SharkyPatcher/Patcher/DUpdaterPatcher.cs | 108 +++++ SharkyPatcher/Patcher/DalamudPatcher.cs | 227 ++++++++++ SharkyPatcher/Patcher/XIVCommonPatcher.cs | 82 ++++ SharkyPatcher/Resolver/CustomResolver.cs | 56 +++ SharkyPatcher/Resolver/DalamudResolver.cs | 22 + SharkyPatcher/SharkyIcon.ico | Bin 0 -> 166435 bytes SharkyPatcher/SharkyPatcher.csproj | 28 ++ SharkyPatcher/packages.lock.json | 464 +++++++++++++++++++++ 19 files changed, 1523 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 FFXIVSharkyPatcher.sln create mode 100644 README.md create mode 100644 RELEASE.md create mode 100644 SharkyPatcher/.gitignore create mode 100644 SharkyPatcher/App.cs create mode 100644 SharkyPatcher/Common/DalamudVersionInfo.cs create mode 100644 SharkyPatcher/Common/LoggerUtil.cs create mode 100644 SharkyPatcher/Common/SharkyArt.cs create mode 100644 SharkyPatcher/FodyWeavers.xml create mode 100644 SharkyPatcher/Patcher/BasePatcher.cs create mode 100644 SharkyPatcher/Patcher/DUpdaterPatcher.cs create mode 100644 SharkyPatcher/Patcher/DalamudPatcher.cs create mode 100644 SharkyPatcher/Patcher/XIVCommonPatcher.cs create mode 100644 SharkyPatcher/Resolver/CustomResolver.cs create mode 100644 SharkyPatcher/Resolver/DalamudResolver.cs create mode 100644 SharkyPatcher/SharkyIcon.ico create mode 100644 SharkyPatcher/SharkyPatcher.csproj create mode 100644 SharkyPatcher/packages.lock.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..b92aeec --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,25 @@ +name: Build Patcher +on: [push, pull_request, workflow_dispatch] + +jobs: + build: + name: Build on Windows + runs-on: windows-2022 + steps: + - uses: actions/checkout@v4 + - name: Build SharkyPatcher + run: | + dotnet restore + dotnet publish -c Release + Compress-Archive -Path .\SharkyPatcher\bin\Release\net462\publish\* -Destination SharkyPatcher.zip + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: SharkyPatcher + path: .\SharkyPatcher\bin\Release\net462\publish\ + - name: Tag Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: SharkyPatcher.zip + body_path: RELEASE.md diff --git a/FFXIVSharkyPatcher.sln b/FFXIVSharkyPatcher.sln new file mode 100644 index 0000000..f6d358d --- /dev/null +++ b/FFXIVSharkyPatcher.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.002.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SharkyPatcher", "SharkyPatcher\SharkyPatcher.csproj", "{E500130F-BF96-4B7C-91EF-EC5420FF07C5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E500130F-BF96-4B7C-91EF-EC5420FF07C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E500130F-BF96-4B7C-91EF-EC5420FF07C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E500130F-BF96-4B7C-91EF-EC5420FF07C5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E500130F-BF96-4B7C-91EF-EC5420FF07C5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {8526ABAA-32DE-4974-A0FE-37C37810F443} + EndGlobalSection +EndGlobal diff --git a/README.md b/README.md new file mode 100644 index 0000000..39e7552 --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +

+ +

+ +# FFXIV Sharky Patcher 🦈 鯊鯊補丁 + +[![GitHub Release](https://img.shields.io/github/v/release/sharkycorps/FFXIVSharkyPatcher)](https://github.com/sharkycorps/FFXIVSharkyPatcher/releases) +[![Build Patcher](https://github.com/sharkycorps/FFXIVSharkyPatcher/actions/workflows/build.yml/badge.svg)](https://github.com/sharkycorps/FFXIVSharkyPatcher/actions/workflows/build.yml) + +Patches which remove unreasonable ToS, analytics, plugin bans and integrity check from Dalamud and XIVLauncher CN. + +鯊鯊補丁的目的是移除 Dalamud 和 XIVLauncher CN 中不合理的服務條款、分析、插件禁令和完整性檢查。 + +## Usage 🦈 使用 + +1. Download the latest `SharkyPatcher.zip` from the [Github Releases](https://github.com/sharkycorps/FFXIVSharkyPatcher/releases) +2. Extract it to the same installation directory as `XIVLauncherCN` or `Dalamud.Updater` +3. Double-click `SharkyPatcher.exe` to automatically apply the patch and launch the corresponding main program + +--- + +1. 從 [Github Releases](https://github.com/sharkycorps/FFXIVSharkyPatcher/releases) 中下載最新的 `SharkyPatcher.zip` +2. 將其解壓到 `XIVLauncherCN` 或者 `Dalamud.Updater` 相同安裝目錄下 +3. 雙擊運行 `SharkyPatcher.exe` 即可自動應用補丁,並啟動相應主程序 + +## Community 🦈 社区 + +Discord:https://discord.gg/6XQbvNgn + +## Safety 🦈 安全性 +### Diffs between goatcorp and ottercorp + +goatcorp 和 ottercorp 代碼的區別如下,sharkycorps 只進行了必要的字节码調整和移除,請自行檢查。 + +https://github.com/goatcorp/Dalamud/compare/master...ottercorp:master +https://github.com/goatcorp/FFXIVQuickLauncher/compare/master...ottercorp:FFXIVQuickLauncher:CN \ No newline at end of file diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 0000000..44ffc76 --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,10 @@ +## 使用方法 + +1. 從下方 `Assets` 文件中下載 `SharkyPatcher.zip` +2. 將其解壓到 `XIVLauncherCN` 或者 `Dalamud.Updater` 相同安裝目錄下 +3. 雙擊運行 `SharkyPatcher.exe` 即可自動應用補丁,並啟動相應主程序 + +## 注意 + +1. 啟動器或者衛月版本更新後,可能需要重新運行補丁 +2. 補丁可以重複運行,自身也可作為啟動器的入口 \ No newline at end of file diff --git a/SharkyPatcher/.gitignore b/SharkyPatcher/.gitignore new file mode 100644 index 0000000..44e9bd4 --- /dev/null +++ b/SharkyPatcher/.gitignore @@ -0,0 +1,9 @@ +# build files +bin +obj + +# log files +*.log + +# Fody - auto-generated XML schema +FodyWeavers.xsd \ No newline at end of file diff --git a/SharkyPatcher/App.cs b/SharkyPatcher/App.cs new file mode 100644 index 0000000..8715c7d --- /dev/null +++ b/SharkyPatcher/App.cs @@ -0,0 +1,210 @@ + +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Threading.Tasks; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using SharkyPatcher.Common; +using SharkyPatcher.Patcher; +using static SharkyPatcher.Common.LoggerUtil; + +namespace SharkyPatcher +{ + class App + { + static readonly string _launcherName = "XIVLauncherCN.exe"; + static readonly string _launcherCommonName = "XIVLauncher.Common.dll"; + static readonly string _updaterName = "Dalamud.Updater.exe"; + static readonly string _dalamudName = "Dalamud.dll"; + static readonly string _launcherDalamudBaseDir = "Roaming"; + static readonly string _updaterDalamudBaseDir = "XIVLauncher"; + static readonly string _currentDir = Directory.GetCurrentDirectory(); + static async Task Main() + { + string processToStart = ""; + + try + { + // render sharky ascii art + SharkyArt.Render(); + Log.Information("【鯊鯊補丁】正在啟動……"); + + // patch xiv launcher + if (CheckExists(_launcherName)) + { + Log.Information("=============================================================="); + + processToStart = _launcherName; + string launcherVersion = await GetLauncherVersionAsync(); + string commonSubPath = Path.Combine(launcherVersion, _launcherCommonName); + if (CheckExists(commonSubPath)) + { + BackupFile(commonSubPath); + XIVCommonPatcher launcherPatcher = new XIVCommonPatcher( + Path.Combine(_currentDir, launcherVersion), _launcherCommonName); + launcherPatcher.Patch(); + launcherPatcher.Dispose(); + await PatchDalamud(_launcherDalamudBaseDir, _dalamudName); + } + else + { + Log.Information($"【鯊鯊補丁】<{launcherVersion}> 下未找到 <{_launcherCommonName}>,請確認目錄是否正確"); + Exit(); + } + } + else if (CheckExists(_updaterName)) + { + Log.Information("=============================================================="); + + processToStart = _updaterName; + BackupFile(_updaterName); + DUpdaterPatcher updaterPatcher = new DUpdaterPatcher(_currentDir, _updaterName); + updaterPatcher.Patch(); + updaterPatcher.Dispose(); + await PatchDalamud(_updaterDalamudBaseDir, _dalamudName); + } + + if (!string.IsNullOrEmpty(processToStart)) + { + Log.Information("=============================================================="); + Log.Information("【鯊鯊補丁】補丁全部應用成功!"); + Log.Information("=============================================================="); + StartProcess(processToStart); + Log.Information("=============================================================="); + } + else + { + LogF.Information($"【鯊鯊補丁】當前目錄:{_currentDir}"); + Log.Information("【鯊鯊補丁】當前目錄下未找到啟動器或者更新器,請確認目錄是否正確"); + Exit(); + } + + ExitSuccess(); + } + catch (Exception ex) + { + Log.Information("=============================================================="); + Log.Error("【鯊鯊補丁】補丁應用過程中出現異常!"); + Exit(ex); + } + finally + { + Serilog.Log.CloseAndFlush(); + } + } + + static async Task PatchDalamud(string baseDir, string dalamudName) + { + Log.Information("=============================================================="); + + DalamudVersionInfo dalamudVersion = await GetDalamudVersionAsync(); + string dalamudPath = Path.Combine(baseDir, @"addon\Hooks", dalamudVersion.AssemblyVersion); + bool dalamudExists = CheckExists(Path.Combine(dalamudPath, dalamudName)); + if (dalamudExists) + { + BackupFile(Path.Combine(dalamudPath, dalamudName)); + DalamudPatcher patcher = new DalamudPatcher(Path.Combine(_currentDir, baseDir), dalamudVersion); + patcher.Patch(); + patcher.Dispose(); + } + else + { + Log.Information($"【鯊鯊補丁】<{dalamudPath}> 下未找到 <{dalamudName}>,請確認目錄是否正確"); + Exit(); + } + } + + static async Task GetDalamudVersionAsync() + { + Log.Information("【鯊鯊補丁】獲取框架版本中……"); + + HttpClient client = new HttpClient { Timeout = TimeSpan.FromMinutes(1) }; + client.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue { NoCache = true }; + string versionJson = await client.GetStringAsync("https://aonyx.ffxiv.wang/Dalamud/Release/VersionInfo?track=release").ConfigureAwait(false); + DalamudVersionInfo dalamudVersion = JsonConvert.DeserializeObject(versionJson); + LogF.Information($"【鯊鯊補丁】框架版本:{versionJson}"); + Log.Information($"【鯊鯊補丁】當前 Dalamud 版本:<{dalamudVersion.AssemblyVersion}>"); + + return dalamudVersion; + } + + static async Task GetLauncherVersionAsync() + { + Log.Information("【鯊鯊補丁】獲取啟動器版本中……"); + + HttpClient client = new HttpClient { Timeout = TimeSpan.FromMinutes(1) }; + client.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue { NoCache = true }; + string versionJson = await client.GetStringAsync("https://aonyx.ffxiv.wang/Launcher/GetLease").ConfigureAwait(false); + JObject launcherVersion = JObject.Parse(versionJson); + string releasesList = launcherVersion.GetValue("releasesList").Value(); + string latestRelease = releasesList.Split('\n').Last(); + string nupkgVersion = latestRelease.Split().ElementAt(1); + string appVersion = nupkgVersion.Replace("XIVLauncherCN", "app") + .Replace("-full.nupkg", "") + .Replace("-delta.nupkg", ""); + LogF.Information($"【鯊鯊補丁】啟動器版本:{releasesList}"); + Log.Information($"【鯊鯊補丁】當前啟動器版本:<{appVersion}>"); + + return appVersion; + } + + static void StartProcess(string fileName) { + string programPath = Path.Combine(_currentDir, fileName); + ProcessStartInfo startInfo = new ProcessStartInfo + { + FileName = programPath, + UseShellExecute = true + }; + + Process process = Process.Start(startInfo); + if (process != null) + { + Log.Information($"【鯊鯊補丁】<{fileName}> 已啟動"); + } + else + { + Log.Error($"【鯊鯊補丁】<{fileName}> 啟動失敗,請嘗試手動啟動"); + } + } + + static bool CheckExists(string fileName) + { + string filePath = Path.Combine(_currentDir, fileName); + bool fileExists = File.Exists(filePath); + if (!fileExists) + { + return false; + } + + return true; + } + + static void BackupFile(string fileName) { + string filePath = Path.Combine(_currentDir, fileName); + + try + { + string bakFilePath = filePath + ".spbak"; + bool bakFileExists = File.Exists(bakFilePath); + if (!bakFileExists) + { + File.Copy(filePath, bakFilePath, overwrite: true); + Log.Information($"【鯊鯊補丁】<{fileName}> 備份文件已創建"); + } + else + { + Log.Information($"【鯊鯊補丁】<{fileName}> 備份文件已存在"); + } + } + catch (Exception ex) + { + Log.Error("【鯊鯊補丁】備份文件創建失敗!"); + Exit(ex); + } + } + } +} \ No newline at end of file diff --git a/SharkyPatcher/Common/DalamudVersionInfo.cs b/SharkyPatcher/Common/DalamudVersionInfo.cs new file mode 100644 index 0000000..8e54ed7 --- /dev/null +++ b/SharkyPatcher/Common/DalamudVersionInfo.cs @@ -0,0 +1,13 @@ +namespace SharkyPatcher.Common +{ + public class DalamudVersionInfo + { + public string AssemblyVersion { get; set; } + public string SupportedGameVer { get; set; } + public string RuntimeVersion { get; set; } + public bool RuntimeRequired { get; set; } + public string Key { get; set; } + public string DownloadUrl { get; set; } + public string Hash { get; set;} + } +} \ No newline at end of file diff --git a/SharkyPatcher/Common/LoggerUtil.cs b/SharkyPatcher/Common/LoggerUtil.cs new file mode 100644 index 0000000..2fc6271 --- /dev/null +++ b/SharkyPatcher/Common/LoggerUtil.cs @@ -0,0 +1,71 @@ +using System; +using System.Threading; +using Serilog; + +namespace SharkyPatcher.Common +{ + public static class LoggerUtil + { + private static readonly ILogger _fLogger; + private static readonly ILogger _cLogger; + static LoggerUtil() + { + Serilog.Log.Logger = new LoggerConfiguration() + .MinimumLevel.Debug() + .WriteTo.Logger(lc => lc + .Filter.ByExcluding(e => e.Properties.ContainsKey("ConsoleOnly")) + .WriteTo.File("SharkyPatcher.log")) + .WriteTo.Logger(lc => lc + .Filter.ByExcluding(e => e.Properties.ContainsKey("FileOnly")) + .WriteTo.Console()) + .CreateLogger(); + _cLogger = Serilog.Log.ForContext("ConsoleOnly", true); + _fLogger = Serilog.Log.ForContext("FileOnly", true); + } + + public static ILogger Log + { + get + { + return Serilog.Log.Logger; + } + } + public static ILogger LogF + { + get + { + return _fLogger; + } + } + public static ILogger LogC + { + get + { + return _cLogger; + } + } + + public static void ExitSuccess() + { + LogC.Information("本程序完全開源免費,請確保從鯊鯊軍團官方鏈接下載 https://github.com/sharkycorps"); + LogC.Information("窗口將在20秒後自動關閉……"); + Serilog.Log.CloseAndFlush(); + Thread.Sleep(20000); + Environment.Exit(0); + } + public static void Exit() + { + LogC.Error($"【鯊鯊補丁】已中止操作,請排除問題後重新執行,按任意鍵退出……"); + Serilog.Log.CloseAndFlush(); + Console.ReadKey(); + Environment.Exit(1); + } + public static void Exit(Exception ex) + { + // exit with logs + Log.Error($"【鯊鯊補丁】原因:{ex.Message}"); + LogF.Error($"【鯊鯊補丁】堆疊:{ex.StackTrace}"); + Exit(); + } + } +} \ No newline at end of file diff --git a/SharkyPatcher/Common/SharkyArt.cs b/SharkyPatcher/Common/SharkyArt.cs new file mode 100644 index 0000000..6de2ee8 --- /dev/null +++ b/SharkyPatcher/Common/SharkyArt.cs @@ -0,0 +1,65 @@ +using System; + +namespace SharkyPatcher.Common +{ + class SharkyArt + { + readonly static string[] _sharkyArt = new string[] + { + " @@@@@@@@@@@@@@ ", + " @@@ @@@@ ", + " @@% *@@@@@@@ :@@@ ", + " @@* *@%** .%@@@# +@@ ", + " @@ :@@@:- #=@@@@ :@@ ", + " @@ -*@@@*--=+@@@@ ==. *@@ ", + " @@ =@@@@@@@@@@@@@@%++@@@+@-. @@ ", + " @%.@@@@@@@@@@@@@@@@@@@@=@@%-@@@-: @@@ ", + " @@@ @@@@@@@@@@%********%@@@@@@@@@@@@+@%- #@ ", + " @@@@@@*++=--------------===+*#@@@@%@@-: : %@ ", + " @@@----- :-------------------@@@@=-----@ ", + " @@=---. .------------------@@@----.@@ ", + " @ @@---. :-----------------@+-- @@ ", + " @@ @@--- :--@@@@%---------%@@@ ", + " @@ @@ @@@-. %@@ -@@@---------#@ ", + " @@@@ @@ @@@ @@ =@@@@@@@@= @@@@@@@@----------@@ ", + " @@ @@@@@* #@@ @*@..@.-=*#@+@ -@@@@@----%#-@----@@ @@ ", + " @@= -@=. := .---+@-#@---+@@ ", + " @@ ----@*----+#@@@@ ", + " @@ --------.@@@----#@@@ ", + " @+#- :---------.@@+------#@@ ", + " @@.-+@ -----------+@+--=++@@@ ", + " @%----@ -#@@+=------=@*@@@@ ", + " @%---+#@@ .--++@@@*=---@@ ", + " @**@@@ @@ :--+#@*+*@@@@@@@@@ ", + " @@ :-=:#**-+=. --+%@*+**@%#+*@+@@@@ ", + " @@@*++**#%@@@@@@@@@@%@#@-+*##-+*@-------. -=@@+*@+@@@@@@@*---+-:@@ ", + " @@ .=%@@---@- --@%+++@@@@@@@@@@@ ", + " @@. #+ .:-+*#@@@@@#+-. . %# @- :+@@@@@@@@%***#%@@@@@@##@@ ", + " @@= =#. .:-+#%@@@@@@=-. :+- : --@@@@=@%@ ", + " @@ .: ::-::-:::. .-------:. .:-=++***#%@@ ", + " @@+-+ :--------------::-::::-----:::. @@ ", + " @@== :-------%=-:--------------------------------==--------------:.@@ ", + " @@= :----------%+-:-------------------------------------------:*@@ ", + " ####%@@@@%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ " + }; + + public SharkyArt() { } + public static void Render() + { + + Console.WriteLine(new string('=', 100)); + Console.WriteLine(); + + foreach (string line in _sharkyArt) + { + Console.WriteLine(line); + } + + Console.WriteLine(); + Console.WriteLine(new string('=', 100)); + Console.WriteLine(); + Console.WriteLine($"{new string(' ', 15)}- Sharky Corps 鯊鯊軍團 - 在廣闊無垠的海洋上遨遊 -"); + Console.WriteLine(); + } + } +} \ No newline at end of file diff --git a/SharkyPatcher/FodyWeavers.xml b/SharkyPatcher/FodyWeavers.xml new file mode 100644 index 0000000..a5dcf04 --- /dev/null +++ b/SharkyPatcher/FodyWeavers.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/SharkyPatcher/Patcher/BasePatcher.cs b/SharkyPatcher/Patcher/BasePatcher.cs new file mode 100644 index 0000000..70cfe5e --- /dev/null +++ b/SharkyPatcher/Patcher/BasePatcher.cs @@ -0,0 +1,68 @@ +using System; +using System.IO; +using Mono.Cecil; +using SharkyPatcher.Resolver; +using static SharkyPatcher.Common.LoggerUtil; + +namespace SharkyPatcher.Patcher +{ + class BasePatcher + { + readonly string _assemblyDir; + readonly string _assemblyName; + protected virtual string _patchDesc { get; } = "應用補丁"; + protected AssemblyDefinition _targetAssembly; + protected CustomResolver _resolver; + + public virtual void Patch() { } + + public BasePatcher(string assemblyDir, string assemblyName) + : this(assemblyDir, assemblyName, new CustomResolver(assemblyDir)) {} + public BasePatcher(string assemblyDir, string assemblyName, CustomResolver resolver) + { + _assemblyDir = assemblyDir; + _assemblyName = assemblyName; + _resolver = resolver; + _targetAssembly = LoadAssembly(_assemblyDir, _assemblyName); + } + + AssemblyDefinition LoadAssembly(string assemblyDir, string assemblyName) + { + if (string.IsNullOrEmpty(assemblyDir) || string.IsNullOrEmpty(assemblyName)) + { + Log.Error($"【鯊鯊補丁】讀取失敗,目標檔案或路徑不存在!"); + Exit(); + } + + // use custom resolver and allow write back + ReaderParameters parameters = new ReaderParameters + { + AssemblyResolver = _resolver, + ReadWrite = true, + }; + + string fullPath = Path.Combine(assemblyDir, assemblyName); + return AssemblyDefinition.ReadAssembly(fullPath, parameters); + } + + protected void SaveAssembly() + { + try + { + _targetAssembly.Write(); + Log.Information($"【鯊鯊補丁】【{_assemblyName}】已成功{_patchDesc}"); + } + catch (Exception ex) + { + Log.Error($"【鯊鯊補丁】【{_assemblyName}】寫入補丁失敗!"); + _targetAssembly.Dispose(); + Exit(ex); + } + } + + public void Dispose () + { + _targetAssembly.Dispose(); + } + } +} diff --git a/SharkyPatcher/Patcher/DUpdaterPatcher.cs b/SharkyPatcher/Patcher/DUpdaterPatcher.cs new file mode 100644 index 0000000..95df10b --- /dev/null +++ b/SharkyPatcher/Patcher/DUpdaterPatcher.cs @@ -0,0 +1,108 @@ +using System.Collections.Generic; +using System.Linq; +using Mono.Cecil; +using Mono.Cecil.Cil; +using static SharkyPatcher.Common.LoggerUtil; + +namespace SharkyPatcher.Patcher +{ + class DUpdaterPatcher : BasePatcher + { + readonly static string _assemblyName = "Dalamud.Updater.exe"; + protected override string _patchDesc { get; } = "應用補丁,移除了对 Dalamud.dll 的完整性檢查"; + public DUpdaterPatcher(string assemblyDir) : base(assemblyDir, _assemblyName) { } + public DUpdaterPatcher(string assemblyDir, string assemblyName) : base(assemblyDir, assemblyName) { } + + public override void Patch() + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】正在嘗試移除完整性檢查……"); + + // get target type and method + string targetTypeName = "XIVLauncher.Common.Dalamud.DalamudUpdater"; + string targetMethodName = "IsIntegrity"; + ModuleDefinition targetModule = _targetAssembly.MainModule; + TypeDefinition targetType = targetModule.GetType(targetTypeName); + MethodDefinition targetMethod = targetType.Methods.FirstOrDefault(m => m.Name == targetMethodName); + if (targetMethod == null) + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】未找到完整性檢查函式 <{targetMethodName}>,已跳過"); + return; + } + + if (targetMethod.Body.Instructions.Any(i => i.OpCode == OpCodes.Ldstr + && ((string)i.Operand) == "Dalamud.dll")) + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】已移除過完整性檢查,已跳過"); + return; + } + + // get target method body + var ilProcessor = targetMethod.Body.GetILProcessor(); + + // find target instruction + Instruction targetInstruction = null; + foreach (var instruction in targetMethod.Body.Instructions) + { + if (instruction.OpCode == OpCodes.Brfalse_S) + { + var previousInstruction = instruction.Previous; + var nextInstruction = instruction.Next; + if (previousInstruction != null + && previousInstruction.OpCode == OpCodes.Call + && ((MethodReference)previousInstruction.Operand).Name == "op_Inequality") + { + if (nextInstruction != null + && nextInstruction.OpCode == OpCodes.Ldstr + && ((string)nextInstruction.Operand).Contains("Integrity check failed")) + { + targetInstruction = instruction; + break; + } + } + } + } + + LogF.Information($"【鯊鯊補丁】【{ _assemblyName }】目標指令內容為 { targetInstruction }"); + + if (targetInstruction != null) + { + var LdKVPairInstruction = targetInstruction.Previous.Previous.Previous; // load keyValuePair inst + var LdTextInstruction = LdKVPairInstruction.Previous; // load file hash text inst + var OkInstruction = (Instruction)targetInstruction.Operand; // ok str inst + var kvpGetKeyMethod = typeof(KeyValuePair).GetProperty("Key").GetGetMethod(); // to do: rm typeof ? + var stringInequalMethod = targetModule.TypeSystem.String.Resolve().Methods.First(m => m.Name == "op_Inequality" && m.Parameters.Count == 2); + + // bypass dalamud.dll check + var newInstructions = new[] + { + ilProcessor.Create(OpCodes.Ldloca_S, (VariableDefinition)LdKVPairInstruction.Operand), + ilProcessor.Create(OpCodes.Call, targetModule.ImportReference(kvpGetKeyMethod)), + ilProcessor.Create(OpCodes.Ldstr, "Dalamud.dll"), + ilProcessor.Create(OpCodes.Call, targetModule.ImportReference(stringInequalMethod)), + ilProcessor.Create(OpCodes.Brfalse_S, OkInstruction), + }; + + // insert instructions + foreach (var instruction in newInstructions) + { + ilProcessor.InsertBefore(LdTextInstruction, instruction); + } + + // write back to dll + SaveAssembly(); + } else { + Log.Information($"【鯊鯊補丁】【{ _assemblyName }】未找到完整性檢查指令,已跳過"); + } + } + + /* reference instructions + * + 135 01C6 ldloc.s V_11 (11) + 136 01C8 ldloca.s V_7 (7) + 137 01CA call instance !1 valuetype [mscorlib]System.Collections.Generic.KeyValuePair`2::get_Value() + 138 01CF call bool [mscorlib]System.String::op_Inequality(string, string) + 139 01D4 brfalse.s 149 (01EF) ldstr "[DUPDATE] Integrity check OK for {0} ({1})" + 140 01D6 ldstr "[DUPDATE] Integrity check failed for {0} ({1} - {2})" + */ + } +} \ No newline at end of file diff --git a/SharkyPatcher/Patcher/DalamudPatcher.cs b/SharkyPatcher/Patcher/DalamudPatcher.cs new file mode 100644 index 0000000..674a46b --- /dev/null +++ b/SharkyPatcher/Patcher/DalamudPatcher.cs @@ -0,0 +1,227 @@ +using System.IO; +using System.Linq; +using Mono.Cecil; +using Mono.Cecil.Cil; +using SharkyPatcher.Common; +using SharkyPatcher.Resolver; +using static SharkyPatcher.Common.LoggerUtil; + +namespace SharkyPatcher.Patcher +{ + class DalamudPatcher : BasePatcher + { + readonly static string _assemblyName = "Dalamud.dll"; + protected override string _patchDesc { get; } = "應用補丁,移除了用戶協議、跟踪代碼以及插件屏蔽"; + public DalamudPatcher(string baseDir, DalamudVersionInfo version) + : this(baseDir, _assemblyName, version) {} + public DalamudPatcher(string baseDir, string assemblyName, DalamudVersionInfo version) + : base(Path.Combine(baseDir, @"addon\Hooks", version.AssemblyVersion), assemblyName, + new DalamudResolver(baseDir, version)) {} + + void PatchAnalytics() + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】正在嘗試移除跟踪代碼……"); + + string targetTypeName = "Dalamud.Support.EventTracking"; + ModuleDefinition targetModule = _targetAssembly.MainModule; + TypeDefinition targetType = targetModule.GetType(targetTypeName); + if (targetType == null) + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】未找到跟踪類 <{targetTypeName}>,已跳過"); + return; + } + + // remove analytics url + string targetFieldName = "AnalyticsUrl"; + FieldDefinition targetField = targetType.Fields.FirstOrDefault(f => f.Name == targetFieldName); + if (targetField == null || targetField.HasConstant == false) + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】未找到跟踪連結 <{targetFieldName}>,已跳過"); + } + else + { + targetField.Constant = ""; + } + + // clear send measurement method + string targetMethodName = "SendMeasurement"; + MethodDefinition targetMethod = targetType.Methods.FirstOrDefault(m => m.Name == targetMethodName); + if (targetMethod == null) + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】未找到跟踪函式 <{targetMethodName}>,已跳過"); + } + else + { + ILProcessor ilProcessor = targetMethod.Body.GetILProcessor(); + ilProcessor.Body.ExceptionHandlers.Clear(); + ilProcessor.Body.Variables.Clear(); + ilProcessor.Body.Instructions.Clear(); + ilProcessor.Append(ilProcessor.Create(OpCodes.Ret)); + } + } + + void PatchToSWindow() + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】正在嘗試移除用戶協議視窗……"); + + string targetTypeName = "Dalamud.Interface.Internal.Windows.ToSWindow"; + ModuleDefinition targetModule = _targetAssembly.MainModule; + TypeDefinition targetType = targetModule.GetType(targetTypeName); + if (targetType == null) { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】未找到用戶協議視窗 <{targetTypeName}>,已跳過"); + return; + } + + // clear get tos method + string targetMethodName = "GetRemoteTOS"; + MethodDefinition targetMethod = targetType.Methods.FirstOrDefault(m => m.Name == targetMethodName); + if (targetMethod == null) + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】未找到用戶協議請求函式 <{targetMethodName}>,已跳過"); + } + else + { + ILProcessor ilProcessor = targetMethod.Body.GetILProcessor(); + ilProcessor.Body.ExceptionHandlers.Clear(); + ilProcessor.Body.Variables.Clear(); + ilProcessor.Body.Instructions.Clear(); + ilProcessor.Append(ilProcessor.Create(OpCodes.Ret)); + } + + // clear draw method + string drawMethodName = "Draw"; + MethodDefinition drawMethod = targetType.Methods.FirstOrDefault(m => m.Name == drawMethodName); + if (targetMethod == null) + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】未找到用戶協議繪製函式 <{drawMethodName}>,已跳過"); + } + else + { + ILProcessor drawIlProcessor = drawMethod.Body.GetILProcessor(); + drawIlProcessor.Body.ExceptionHandlers.Clear(); + drawIlProcessor.Body.Variables.Clear(); + drawIlProcessor.Body.Instructions.Clear(); + + // set isOpen false + string windowTypeName = "Dalamud.Interface.Windowing.Window"; + string setIsOpenMethodName = "set_IsOpen"; + TypeDefinition windowType = targetModule.GetType(windowTypeName); + MethodDefinition setIsOpenMethod = windowType.Methods.First(m => m.Name == setIsOpenMethodName); + drawIlProcessor.Append(drawIlProcessor.Create(OpCodes.Ldarg_0)); + drawIlProcessor.Append(drawIlProcessor.Create(OpCodes.Ldc_I4_0)); + drawIlProcessor.Append(drawIlProcessor.Create(OpCodes.Call, targetModule.ImportReference(setIsOpenMethod))); + drawIlProcessor.Append(drawIlProcessor.Create(OpCodes.Ret)); + } + } + + void PatchRemoteTos() + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】正在嘗試移除用戶協議連結……"); + + string targetTypeName = "Dalamud.Utility.Util"; + ModuleDefinition targetModule = _targetAssembly.MainModule; + TypeDefinition targetType = targetModule.GetType(targetTypeName); + + // remove tos url + string targetFieldName = "TOSRemoteUrl"; + FieldDefinition targetField = targetType.Fields.FirstOrDefault(f => f.Name == targetFieldName); + if (targetField == null) { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】未找到用戶協議連結 <{targetFieldName}>,已跳過"); + } + else + { + MethodDefinition staticConstructor = targetType.Methods.FirstOrDefault(m => m.IsConstructor && m.IsStatic); + Instruction targetInstruction = staticConstructor.Body.Instructions.FirstOrDefault(i => + i.OpCode == OpCodes.Stsfld && ((FieldReference)i.Operand).FullName == targetField.FullName); + Instruction loadStringInstruction = targetInstruction.Previous; + if (loadStringInstruction.OpCode == OpCodes.Ldstr) + { + loadStringInstruction.Operand = string.Empty; + } + } + + // return empty tos hash + string targetMethodName = "GetRemoteTOSHash"; + MethodDefinition targetMethod = targetType.Methods.FirstOrDefault(m => m.Name == targetMethodName); + if (targetMethod == null) + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】未找到用戶協議請求函式 <{targetMethodName}>,已跳過"); + } + else + { + ILProcessor ilProcessor = targetMethod.Body.GetILProcessor(); + ilProcessor.Body.ExceptionHandlers.Clear(); + ilProcessor.Body.Variables.Clear(); + ilProcessor.Body.Instructions.Clear(); + ilProcessor.Append(ilProcessor.Create(OpCodes.Ldstr, string.Empty)); + ilProcessor.Append(ilProcessor.Create(OpCodes.Ret)); + } + } + void PatchPluginBans() + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】正在嘗試移除插件屏蔽……"); + + string targetTypeName = "Dalamud.Plugin.Internal.PluginManager"; + ModuleDefinition targetModule = _targetAssembly.MainModule; + TypeDefinition targetType = targetModule.GetType(targetTypeName); + MethodDefinition targetMethod = targetType.Methods.First(m => m.IsConstructor && !m.IsStatic && m.Parameters.Count == 2); + ILProcessor ilProcessor = targetMethod.Body.GetILProcessor(); + + // skip if no ban + string bannedPluginJsonName = "bannedplugin.json"; + if (!targetMethod.Body.Instructions.Any(i => i.OpCode == OpCodes.Ldstr + && ((string)i.Operand) == bannedPluginJsonName)) + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】未找到插件屏蔽列表 <{bannedPluginJsonName}>,已跳過"); + return; + } + + Instruction stfldInstruction = targetMethod.Body.Instructions.FirstOrDefault(i => i.OpCode == OpCodes.Stfld + && ((FieldReference)i.Operand).Name == "bannedPlugins"); + // skip if patched or changed + if (stfldInstruction.Previous.OpCode == OpCodes.Call && stfldInstruction.Previous.Previous.OpCode == OpCodes.Call) { + // remove unused instruction + ilProcessor.Remove(stfldInstruction.Previous.Previous.Previous.Previous); + ilProcessor.Remove(stfldInstruction.Previous.Previous.Previous); + + // create zero length array + TypeDefinition bannedPluginType = targetModule.GetType("Dalamud.Plugin.Internal.Types.BannedPlugin"); + stfldInstruction.Previous.Previous.OpCode = OpCodes.Ldc_I4_0; + stfldInstruction.Previous.Previous.Operand = null; + stfldInstruction.Previous.OpCode = OpCodes.Newarr; + stfldInstruction.Previous.Operand = targetModule.ImportReference(bannedPluginType); + } else { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】已移除過插件屏蔽,已跳過"); + } + } + + void AddSettingsTitle() + { + string targetTypeName = "Dalamud.Interface.Internal.Windows.Settings.SettingsWindow"; + ModuleDefinition targetModule = _targetAssembly.MainModule; + TypeDefinition targetType = targetModule.GetType(targetTypeName); + MethodDefinition targetMethod = targetType.Methods.First(m => m.IsConstructor && !m.IsStatic && m.Parameters.Count == 0); + Instruction strInstruction = targetMethod.Body.Instructions.FirstOrDefault(i => i.OpCode == OpCodes.Ldstr + && ((string)i.Operand).Contains("###XlSettings2")); + strInstruction.Operand = " | Sharky Patched###XlSettings2"; + } + public override void Patch() + { + // remove analytics + PatchAnalytics(); + + // remove tos + PatchToSWindow(); + PatchRemoteTos(); + + // remove plugin ban + PatchPluginBans(); + + // add sharky to settings title + AddSettingsTitle(); + + // write back to dll + SaveAssembly(); + } + } +} \ No newline at end of file diff --git a/SharkyPatcher/Patcher/XIVCommonPatcher.cs b/SharkyPatcher/Patcher/XIVCommonPatcher.cs new file mode 100644 index 0000000..1ed4b11 --- /dev/null +++ b/SharkyPatcher/Patcher/XIVCommonPatcher.cs @@ -0,0 +1,82 @@ +using System.Linq; +using Mono.Cecil; +using Mono.Cecil.Cil; +using static SharkyPatcher.Common.LoggerUtil; + +namespace SharkyPatcher.Patcher +{ + class XIVCommonPatcher : BasePatcher + { + readonly static string _assemblyName = "XIVLauncher.Common.dll"; + protected override string _patchDesc { get; } = "應用補丁,移除了对 Dalamud.dll 的完整性檢查"; + public XIVCommonPatcher(string assemblyDir) : base(assemblyDir, _assemblyName) { } + public XIVCommonPatcher(string assemblyDir, string assemblyName) : base(assemblyDir, assemblyName) { } + + public override void Patch() + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】正在嘗試移除完整性檢查……"); + + // get target type and method + string targetTypeName = "XIVLauncher.Common.Dalamud.DalamudUpdater"; + string targetMethodName = "CheckIntegrity"; + ModuleDefinition targetModule = _targetAssembly.MainModule; + TypeDefinition targetType = targetModule.GetType(targetTypeName); + MethodDefinition targetMethod = targetType.Methods.FirstOrDefault(m => m.Name == targetMethodName); + if (targetMethod == null) + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】未找到完整性檢查函式 <{targetMethodName}>,已跳過"); + return; + } + + if (targetMethod.Body.Instructions.Any(i => i.OpCode == OpCodes.Ldstr + && ((string)i.Operand) == "Dalamud.dll")) + { + Log.Information($"【鯊鯊補丁】【{_assemblyName}】已移除過完整性檢查,已跳過"); + return; + } + + // load Newtonsoft.Json referenced by target dll + AssemblyNameReference jsonReference = targetModule.AssemblyReferences.First(reference => reference.Name == "Newtonsoft.Json"); + ModuleDefinition jsonModule = _resolver.Resolve(jsonReference).MainModule; + + // find jobject methods reference, tostring from base object + TypeDefinition jObjectType = jsonModule.GetType("Newtonsoft.Json.Linq.JObject"); + MethodDefinition parseMethod = jObjectType.Methods.First(m => m.Name == "Parse" && m.Parameters.Count == 1); + MethodDefinition removeMethod = jObjectType.Methods.First(m => m.Name == "Remove" && m.Parameters.Count == 1); + TypeDefinition objType = targetModule.TypeSystem.Object.Resolve(); + MethodDefinition toStringMethod = objType.Methods.First(m => m.Name == "ToString" && m.Parameters.Count == 0); + + TypeReference jObjectTypeRef = targetModule.ImportReference(jObjectType); + MethodReference parseMethodRef = targetModule.ImportReference(parseMethod); + MethodReference removeMethodRef = targetModule.ImportReference(removeMethod); + MethodReference toStringMethodRef = targetModule.ImportReference(toStringMethod); + + // insert il code before target method body + ILProcessor ilProcessor = targetMethod.Body.GetILProcessor(); + Instruction firstInstruction = targetMethod.Body.Instructions.First(); + + // add temp jobject variable + VariableDefinition jObjVar = new VariableDefinition(jObjectTypeRef); + targetMethod.Body.Variables.Add(jObjVar); + + // load second json str parameter and parse to jobject + ilProcessor.InsertBefore(firstInstruction, ilProcessor.Create(OpCodes.Ldarg_1)); + ilProcessor.InsertBefore(firstInstruction, ilProcessor.Create(OpCodes.Call, parseMethodRef)); + ilProcessor.InsertBefore(firstInstruction, ilProcessor.Create(OpCodes.Stloc, jObjVar)); + + // delete target property from the jobject + ilProcessor.InsertBefore(firstInstruction, ilProcessor.Create(OpCodes.Ldloc, jObjVar)); + ilProcessor.InsertBefore(firstInstruction, ilProcessor.Create(OpCodes.Ldstr, "Dalamud.dll")); + ilProcessor.InsertBefore(firstInstruction, ilProcessor.Create(OpCodes.Callvirt, removeMethodRef)); + ilProcessor.InsertBefore(firstInstruction, ilProcessor.Create(OpCodes.Pop)); // clear the stack + + // convert back to json str and save back to second parameter + ilProcessor.InsertBefore(firstInstruction, ilProcessor.Create(OpCodes.Ldloc, jObjVar)); + ilProcessor.InsertBefore(firstInstruction, ilProcessor.Create(OpCodes.Callvirt, toStringMethodRef)); + ilProcessor.InsertBefore(firstInstruction, ilProcessor.Create(OpCodes.Starg_S, (byte)1)); + + // write back to dll + SaveAssembly(); + } + } +} \ No newline at end of file diff --git a/SharkyPatcher/Resolver/CustomResolver.cs b/SharkyPatcher/Resolver/CustomResolver.cs new file mode 100644 index 0000000..e1c070b --- /dev/null +++ b/SharkyPatcher/Resolver/CustomResolver.cs @@ -0,0 +1,56 @@ +using Mono.Cecil; +using System.Collections.Generic; +using System.IO; +using static SharkyPatcher.Common.LoggerUtil; + +namespace SharkyPatcher.Resolver +{ + public class CustomResolver : BaseAssemblyResolver + { + protected readonly List _directories; + + public CustomResolver(string customDirectory) + { + _directories = new List + { + customDirectory + }; + LogF.Information($"【鯊鯊補丁】自定義解析器在以下目錄初始化:{customDirectory}"); + } + + public override AssemblyDefinition Resolve(AssemblyNameReference name) + { + // Use a default ReaderParameters if none are provided + return Resolve(name, new ReaderParameters()); + } + + public override AssemblyDefinition Resolve(AssemblyNameReference name, ReaderParameters parameters) + { + foreach (var directory in _directories) + { + // try to resolve from the custom directory. + string assemblyPath = Path.Combine(directory, name.Name + ".dll"); + LogF.Information($"【鯊鯊補丁】正在嘗試從 {assemblyPath} 解析 {name.Name}"); + + if (File.Exists(assemblyPath)) + { + LogF.Information($"【鯊鯊補丁】成功從自定義目錄解析到了 {name.Name}"); + parameters.AssemblyResolver = this; // Ensure the custom resolver is used for nested resolutions + return GetAssembly(assemblyPath, parameters); + } + } + + LogF.Information($"【鯊鯊補丁】未在自定義目錄中解析到 {name.Name},繼續使用默認解析器解析"); + // If not found in the custom directory, fall back to the default base resolver. + return base.Resolve(name, parameters); + } + + AssemblyDefinition GetAssembly(string file, ReaderParameters parameters) + { + if (parameters.AssemblyResolver == null) + parameters.AssemblyResolver = this; + + return ModuleDefinition.ReadModule(file, parameters).Assembly; + } + } +} \ No newline at end of file diff --git a/SharkyPatcher/Resolver/DalamudResolver.cs b/SharkyPatcher/Resolver/DalamudResolver.cs new file mode 100644 index 0000000..73fae54 --- /dev/null +++ b/SharkyPatcher/Resolver/DalamudResolver.cs @@ -0,0 +1,22 @@ + +using System.IO; +using SharkyPatcher.Common; +using static SharkyPatcher.Common.LoggerUtil; + +namespace SharkyPatcher.Resolver +{ + public class DalamudResolver : CustomResolver + { + public DalamudResolver(string baseDir, DalamudVersionInfo version) + : base(Path.Combine(baseDir, @"addon\Hooks", version.AssemblyVersion)) + { + var runtimeDir = Path.Combine(baseDir, @"runtime\shared"); + var NETCoreRuntimeDir = Path.Combine(runtimeDir, "Microsoft.NETCore.App", version.RuntimeVersion); + var WINDesktopRuntimeDir = Path.Combine(runtimeDir, "Microsoft.WindowsDesktop.App", version.RuntimeVersion); + _directories.Add(NETCoreRuntimeDir); + _directories.Add(WINDesktopRuntimeDir); + LogF.Information($"【鯊鯊補丁】自定義解析器在以下目錄初始化:{NETCoreRuntimeDir}"); + LogF.Information($"【鯊鯊補丁】自定義解析器在以下目錄初始化:{WINDesktopRuntimeDir}"); + } + } +} \ No newline at end of file diff --git a/SharkyPatcher/SharkyIcon.ico b/SharkyPatcher/SharkyIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ee9d2b8ddf1b3f469e111a8883bb693c07156853 GIT binary patch literal 166435 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
  • ;6U7yndk1bCZQqrU>yO3EK>F*|K;;Ky+B1}?w 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 + + + Exe + net462 + disable + SharkyIcon.ico + None + False + true + + + + + all + + + all + + + + + + + + + + diff --git a/SharkyPatcher/packages.lock.json b/SharkyPatcher/packages.lock.json new file mode 100644 index 0000000..2bd8193 --- /dev/null +++ b/SharkyPatcher/packages.lock.json @@ -0,0 +1,464 @@ +{ + "version": 1, + "dependencies": { + ".NETFramework,Version=v4.6.2": { + "Costura.Fody": { + "type": "Direct", + "requested": "[5.7.0, )", + "resolved": "5.7.0", + "contentHash": "MmL28WOOnJEBWORXj6bfSxfWaZW8gWSXEJTdrjB9AQi4COX6RXr2xdGL9HsxpWwn6f5Io0NmNuwFJe94w1YmQA==", + "dependencies": { + "Fody": "6.5.5", + "NETStandard.Library": "1.6.1" + } + }, + "Fody": { + "type": "Direct", + "requested": "[6.8.2, )", + "resolved": "6.8.2", + "contentHash": "sjGHrtGS1+kcrv99WXCvujOFBTQp4zCH3ZC9wo2LAtVaJkuLpHghQx3y4k1Q8ZKuDAbEw+HE6ZjPUJQK3ejepQ==" + }, + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net462": "1.0.3" + } + }, + "Mono.Cecil": { + "type": "Direct", + "requested": "[0.11.5, )", + "resolved": "0.11.5", + "contentHash": "fxfX+0JGTZ8YQeu1MYjbBiK2CYTSzDyEeIixt+yqKKTn7FW8rv7JMY70qevup4ZJfD7Kk/VG/jDzQQTpfch87g==" + }, + "Newtonsoft.Json": { + "type": "Direct", + "requested": "[13.0.3, )", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" + }, + "Serilog": { + "type": "Direct", + "requested": "[4.0.1, )", + "resolved": "4.0.1", + "contentHash": "pzeDRXdpSLSsgBHpZcmpIDxqMy845Ab4s+dfnBg0sN9h8q/4Wo3vAoe0QCGPze1Q06EVtEPupS+UvLm8iXQmTQ==", + "dependencies": { + "System.Diagnostics.DiagnosticSource": "8.0.1", + "System.Threading.Channels": "8.0.0", + "System.ValueTuple": "4.5.0" + } + }, + "Serilog.Sinks.Console": { + "type": "Direct", + "requested": "[6.0.0, )", + "resolved": "6.0.0", + "contentHash": "fQGWqVMClCP2yEyTXPIinSr5c+CBGUvBybPxjAGcf7ctDhadFhrQw03Mv8rJ07/wR5PDfFjewf2LimvXCDzpbA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Sinks.File": { + "type": "Direct", + "requested": "[6.0.0, )", + "resolved": "6.0.0", + "contentHash": "lxjg89Y8gJMmFxVkbZ+qDgjl+T4yC5F7WSLTvA+5q0R04tfKVLRL/EHpYoJ/MEQd2EeCKDuylBIVnAYMotmh2A==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "System.Net.Http": { + "type": "Direct", + "requested": "[4.3.4, )", + "resolved": "4.3.4", + "contentHash": "aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==", + "dependencies": { + "System.Security.Cryptography.X509Certificates": "4.3.0" + } + }, + "Microsoft.NETCore.Platforms": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" + }, + "Microsoft.NETFramework.ReferenceAssemblies.net462": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "IzAV30z22ESCeQfxP29oVf4qEo8fBGXLXSU6oacv/9Iqe6PzgHDKCaWfwMBak7bSJQM0F5boXWoZS+kChztRIQ==" + }, + "Microsoft.Win32.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==" + }, + "NETStandard.Library": { + "type": "Transitive", + "resolved": "1.6.1", + "contentHash": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.Win32.Primitives": "4.3.0", + "System.AppContext": "4.3.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Console": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.Compression.ZipFile": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Net.Http": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Net.Sockets": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Timer": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XDocument": "4.3.0" + } + }, + "System.AppContext": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==" + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.Collections": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==" + }, + "System.Collections.Concurrent": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==" + }, + "System.Console": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==" + }, + "System.Diagnostics.Debug": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==" + }, + "System.Diagnostics.DiagnosticSource": { + "type": "Transitive", + "resolved": "8.0.1", + "contentHash": "vaoWjvkG1aenR2XdjaVivlCV9fADfgyhW5bZtXT23qaEea0lWiUljdQuze4E31vKM7ZWJaSUsbYIKE3rnzfZUg==", + "dependencies": { + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Diagnostics.Tools": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==" + }, + "System.Diagnostics.Tracing": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==" + }, + "System.Globalization": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==" + }, + "System.Globalization.Calendars": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==" + }, + "System.IO": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==" + }, + "System.IO.Compression": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==" + }, + "System.IO.Compression.ZipFile": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==" + }, + "System.IO.FileSystem": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", + "dependencies": { + "System.IO.FileSystem.Primitives": "4.3.0" + } + }, + "System.IO.FileSystem.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==" + }, + "System.Linq": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==" + }, + "System.Linq.Expressions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==" + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.5", + "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + } + }, + "System.Net.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==" + }, + "System.Net.Sockets": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==" + }, + "System.Numerics.Vectors": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" + }, + "System.ObjectModel": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==" + }, + "System.Reflection": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==" + }, + "System.Reflection.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==" + }, + "System.Reflection.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==" + }, + "System.Resources.ResourceManager": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==" + }, + "System.Runtime": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" + }, + "System.Runtime.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==" + }, + "System.Runtime.Handles": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==" + }, + "System.Runtime.InteropServices": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "dependencies": { + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.InteropServices.RuntimeInformation": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==" + }, + "System.Runtime.Numerics": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==" + }, + "System.Security.Cryptography.Algorithms": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", + "dependencies": { + "System.Security.Cryptography.Primitives": "4.3.0" + } + }, + "System.Security.Cryptography.Encoding": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==" + }, + "System.Security.Cryptography.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==" + }, + "System.Security.Cryptography.X509Certificates": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", + "dependencies": { + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0" + } + }, + "System.Text.Encoding": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==" + }, + "System.Text.Encoding.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==" + }, + "System.Text.RegularExpressions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==" + }, + "System.Threading": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==" + }, + "System.Threading.Channels": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Threading.Tasks": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==" + }, + "System.Threading.Tasks.Extensions": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + } + }, + "System.Threading.Timer": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==" + }, + "System.ValueTuple": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==" + }, + "System.Xml.ReaderWriter": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==" + }, + "System.Xml.XDocument": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==" + } + }, + ".NETFramework,Version=v4.6.2/win7-x86": { + "System.Net.Http": { + "type": "Direct", + "requested": "[4.3.4, )", + "resolved": "4.3.4", + "contentHash": "aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==", + "dependencies": { + "System.Security.Cryptography.X509Certificates": "4.3.0" + } + }, + "System.IO.Compression": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==" + }, + "System.Runtime.InteropServices.RuntimeInformation": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==" + }, + "System.Security.Cryptography.Algorithms": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", + "dependencies": { + "System.Security.Cryptography.Primitives": "4.3.0" + } + }, + "System.Security.Cryptography.Encoding": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==" + }, + "System.Security.Cryptography.X509Certificates": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", + "dependencies": { + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0" + } + } + } + } +} \ No newline at end of file