From 69e7cf9af9877963ad1daa19db27026bbfcd3cb3 Mon Sep 17 00:00:00 2001
From: Mino <1381835+Minoost@users.noreply.github.com>
Date: Thu, 27 Feb 2020 12:10:07 +0900
Subject: [PATCH] WIP corehook
---
Dalamud.Injector/Dalamud.Injector.csproj | 3 +-
Dalamud.Injector/DalamudLauncher.cs | 32 +++++++++++++++++++++-
Dalamud.Injector/DalamudLauncherOptions.cs | 6 ++--
Dalamud.Injector/Exceptions.cs | 28 +++++++++++++++++++
Dalamud.Injector/FFI/Win32.cs | 3 +-
Dalamud.Injector/{ => Program}/Options.cs | 4 +--
Dalamud.Injector/{ => Program}/Program.cs | 2 +-
7 files changed, 69 insertions(+), 9 deletions(-)
create mode 100644 Dalamud.Injector/Exceptions.cs
rename Dalamud.Injector/{ => Program}/Options.cs (76%)
rename Dalamud.Injector/{ => Program}/Program.cs (94%)
diff --git a/Dalamud.Injector/Dalamud.Injector.csproj b/Dalamud.Injector/Dalamud.Injector.csproj
index 01d82ed18..8e2137758 100644
--- a/Dalamud.Injector/Dalamud.Injector.csproj
+++ b/Dalamud.Injector/Dalamud.Injector.csproj
@@ -2,7 +2,8 @@
Exe
netcoreapp3.1
- 8.0
+ preview
+ enable
diff --git a/Dalamud.Injector/DalamudLauncher.cs b/Dalamud.Injector/DalamudLauncher.cs
index b9e18d454..1c78d9887 100644
--- a/Dalamud.Injector/DalamudLauncher.cs
+++ b/Dalamud.Injector/DalamudLauncher.cs
@@ -1,6 +1,11 @@
-using System;
+using System;
using System.Collections.Generic;
+using System.IO.Pipes;
using System.Text;
+using CoreHook.BinaryInjection;
+using CoreHook.BinaryInjection.RemoteInjection;
+using CoreHook.BinaryInjection.RemoteInjection.Configuration;
+using CoreHook.IPC.Platform;
namespace Dalamud.Injector
{
@@ -18,9 +23,34 @@ namespace Dalamud.Injector
//
}
+ public void Relaunch(uint pid)
+ {
+ //
+ }
+
public void Inject(uint pid)
{
+ var corehookConfig = new RemoteInjectorConfiguration
+ {
+ ClrBootstrapLibrary = "",
+ ClrRootPath = "",
+ DetourLibrary = "",
+ HostLibrary = "",
+ InjectionPipeName = "",
+ PayloadLibrary = "",
+ VerboseLog = false,
+ };
+
+ RemoteInjector.Inject(pid, corehookConfig, );
+ }
+ }
+
+ internal sealed class PipePlatform : IPipePlatform
+ {
+ public NamedPipeServerStream CreatePipeByName(string pipeName, string serverName = ".")
+ {
+ return new NamedPipeServerStream(pipeName, PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous, 0x10000, 0x10000);
}
}
}
diff --git a/Dalamud.Injector/DalamudLauncherOptions.cs b/Dalamud.Injector/DalamudLauncherOptions.cs
index 834945b7f..e8b0b26a5 100644
--- a/Dalamud.Injector/DalamudLauncherOptions.cs
+++ b/Dalamud.Injector/DalamudLauncherOptions.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
namespace Dalamud.Injector
@@ -14,11 +14,11 @@ namespace Dalamud.Injector
///
///
///
- public string RootDirectory { get; set; }
+ public string RootDirectory { get; set; } = "";
///
///
///
- public string BinaryDirectory { get; set; }
+ public string BinaryDirectory { get; set; } = "";
}
}
diff --git a/Dalamud.Injector/Exceptions.cs b/Dalamud.Injector/Exceptions.cs
new file mode 100644
index 000000000..23e8dc356
--- /dev/null
+++ b/Dalamud.Injector/Exceptions.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Dalamud.Injector
+{
+ public class DalamudException : Exception
+ {
+ public DalamudException() : base() { }
+
+ public DalamudException(string message) : base(message) { }
+
+ public DalamudException(string message, Exception inner) : base(message, inner) { }
+ }
+
+ public partial class DalamudProcessException : DalamudException
+ {
+ public uint ProcessId { get; }
+ }
+
+ public partial class DalamudProcessException
+ {
+ public DalamudProcessException(uint pid, string message) : base(message)
+ {
+ ProcessId = pid;
+ }
+ }
+}
diff --git a/Dalamud.Injector/FFI/Win32.cs b/Dalamud.Injector/FFI/Win32.cs
index 8e5c7a3de..64f2f6658 100644
--- a/Dalamud.Injector/FFI/Win32.cs
+++ b/Dalamud.Injector/FFI/Win32.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Text;
@@ -6,5 +6,6 @@ namespace Dalamud.Injector.FFI
{
internal static class Win32
{
+
}
}
diff --git a/Dalamud.Injector/Options.cs b/Dalamud.Injector/Program/Options.cs
similarity index 76%
rename from Dalamud.Injector/Options.cs
rename to Dalamud.Injector/Program/Options.cs
index 005fd132a..a5a1b99f2 100644
--- a/Dalamud.Injector/Options.cs
+++ b/Dalamud.Injector/Program/Options.cs
@@ -10,9 +10,9 @@ namespace Dalamud.Injector
public uint Pid { get; set; }
[Option("root", Required = true, HelpText = "")]
- public string RootDirectory { get; set; }
+ public string RootDirectory { get; set; } = null!;
[Option("bin", Required = true, HelpText = "")]
- public string BinaryDirectory { get; set; }
+ public string BinaryDirectory { get; set; } = null!;
}
}
diff --git a/Dalamud.Injector/Program.cs b/Dalamud.Injector/Program/Program.cs
similarity index 94%
rename from Dalamud.Injector/Program.cs
rename to Dalamud.Injector/Program/Program.cs
index 9b1ecfe3c..d6552585c 100644
--- a/Dalamud.Injector/Program.cs
+++ b/Dalamud.Injector/Program/Program.cs
@@ -10,7 +10,7 @@ namespace Dalamud.Injector
Parser.Default.ParseArguments(args)
.WithParsed(opt =>
{
-
+
});
}
}