mirror of
https://github.com/yck1509/ConfuserEx
synced 2026-06-08 18:29:44 +00:00
35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using dnlib.DotNet;
|
|
|
|
namespace Confuser.Core.Services {
|
|
internal class RuntimeService : IRuntimeService {
|
|
ModuleDef rtModule;
|
|
|
|
/// <inheritdoc />
|
|
public TypeDef GetRuntimeType(string fullName) {
|
|
if (rtModule == null) {
|
|
Module module = typeof(RuntimeService).Assembly.ManifestModule;
|
|
string rtPath = "Confuser.Runtime.dll";
|
|
if (module.FullyQualifiedName[0] != '<')
|
|
rtPath = Path.Combine(Path.GetDirectoryName(module.FullyQualifiedName), rtPath);
|
|
rtModule = ModuleDefMD.Load(rtPath, new ModuleCreationOptions() { TryToLoadPdbFromDisk = true });
|
|
rtModule.EnableTypeDefFindCache = true;
|
|
}
|
|
return rtModule.Find(fullName, true);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides methods to obtain runtime library injection type.
|
|
/// </summary>
|
|
public interface IRuntimeService {
|
|
/// <summary>
|
|
/// Gets the specified runtime type for injection.
|
|
/// </summary>
|
|
/// <param name="fullName">The full name of the runtime type.</param>
|
|
/// <returns>The requested runtime type.</returns>
|
|
TypeDef GetRuntimeType(string fullName);
|
|
}
|
|
} |