MalwareSourceCode/MSIL/Trojan/Win32/R/Trojan.Win32.Refroso.hqmj-a46444251debd74675b60bb330cf99debe122ec24698468f4a3835595fddbe4e/PvLogiciels/dotNetProtector/RuntimeInterop.cs
2022-08-18 06:28:56 -05:00

652 lines
25 KiB
C#

// Decompiled with JetBrains decompiler
// Type: PvLogiciels.dotNetProtector.RuntimeInterop
// Assembly: Cursor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: BB91517D-96CD-4859-A72C-BFC1CBA44DE2
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00001-msil\Trojan.Win32.Refroso.hqmj-a46444251debd74675b60bb330cf99debe122ec24698468f4a3835595fddbe4e.exe
using \u0081é;
using \u0082\u00BC;
using õ;
using System;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
namespace PvLogiciels.dotNetProtector
{
public class RuntimeInterop : IRuntime
{
internal Assembly[] ò;
internal Assembly \u0081\u00BD;
internal string \u0082\u00B4;
private static unsafe byte* Ô(Assembly _param0) => (byte*) Marshal.GetHINSTANCE(_param0.GetLoadedModules()[0]).ToPointer();
internal RuntimeInterop() => this.ò = new Assembly[0];
internal unsafe Assembly \u0081â(IntPtr _param1)
{
int id = AppDomain.CurrentDomain.Id;
byte* numPtr = (byte*) \u0082\u00BB.\u00B7(_param1.ToPointer());
if ((IntPtr) numPtr == IntPtr.Zero)
return (Assembly) null;
IntPtr ptr = (IntPtr) (void*) numPtr;
_param1 = ptr;
int num1 = Marshal.ReadInt32(ptr);
int length1 = Marshal.ReadInt32(_param1, 4);
int length2 = Marshal.ReadInt32(_param1, 8);
IntPtr source1 = (IntPtr) (void*) (numPtr + 12);
IntPtr source2 = (IntPtr) (void*) (numPtr + length1 + 12);
byte[] numArray = new byte[length1];
byte[] destination = numArray;
int length3 = length1;
Marshal.Copy(source1, destination, 0, length3);
Assembly assembly;
if (length2 != 0)
{
byte[] rawSymbolStore = new byte[length2];
Marshal.Copy(source2, numArray, 0, length2);
assembly = Assembly.Load(numArray, rawSymbolStore);
}
else
assembly = Assembly.Load(numArray);
Marshal.FreeCoTaskMem(_param1);
if ((object) assembly != null && num1 >= 0)
{
Type[] types = assembly.GetTypes();
IntPtr num2 = types[types.Length - 1].TypeHandle.Value;
\u0082\u00BB.\u0081\u0081((byte*) Marshal.GetHINSTANCE(assembly.GetLoadedModules()[0]).ToPointer(), num2.ToPointer(), num1, id);
}
return assembly;
}
internal static unsafe void Î(Assembly _param0)
{
string assemblyString = PvLogiciels.dotNetProtector.Runtime.GetAssemblyString(_param0);
IntPtr ptr = IntPtr.Zero;
if (assemblyString != (string) null)
ptr = Marshal.StringToCoTaskMemAnsi(assemblyString);
\u0082\u00BB.\u0081\u0081((byte*) Marshal.GetHINSTANCE(_param0.GetLoadedModules()[0]).ToPointer(), (void*) 0, (int*) 0, (sbyte*) ptr.ToPointer(), AppDomain.CurrentDomain.Id);
if (!(ptr != IntPtr.Zero))
return;
Marshal.FreeCoTaskMem(ptr);
}
public virtual Assembly GetEntryAssembly()
{
if ((object) \u0081ê.\u0081\u0099 != null)
return \u0081ê.\u0081\u0099;
Assembly entryAssembly = Assembly.GetEntryAssembly();
if ((object) entryAssembly != null)
{
\u0081ê.\u0081\u0099 = entryAssembly;
return entryAssembly;
}
Assembly executingAssembly = Assembly.GetExecutingAssembly();
if (executingAssembly.FullName.StartsWith("PvLogiciels.dotNetProtector.Runtime"))
return (Assembly) null;
\u0081ê.\u0081\u0099 = executingAssembly;
return executingAssembly;
}
public static IRuntime InitRuntime()
{
RuntimeInterop runtimeInterop = new RuntimeInterop();
if (AppDomain.CurrentDomain.IsDefaultAppDomain())
{
AppDomain.CurrentDomain.ProcessExit += new EventHandler(RuntimeInterop.AppDomain_ProcessExit);
return (IRuntime) runtimeInterop;
}
AppDomain.CurrentDomain.DomainUnload += new EventHandler(new \u0081Þ(AppDomain.CurrentDomain, AppDomain.CurrentDomain.Id).\u0081\u0084);
return (IRuntime) runtimeInterop;
}
public static void AppDomain_ProcessExit(object sender, EventArgs e)
{
GC.Collect();
GC.WaitForPendingFinalizers();
\u0082\u00BB.\u0081\u0086();
}
public virtual void NGenInitRuntime()
{
}
public virtual ulong GetComputerHash() => \u0082\u00BB.\u0081\u008C();
public virtual long GetMacAddress() => \u0082\u00BB.Ç();
public virtual ulong GetBiosHash() => \u0082\u00BB.Ï();
public virtual int UnloadDomain() => \u0082\u00BB.\u0095(AppDomain.CurrentDomain.Id);
public virtual unsafe int InitModule(Type pReserved1, IntPtr pReserved2, string Reserved3)
{
IntPtr ptr = IntPtr.Zero;
if (Reserved3 != (string) null)
ptr = Marshal.StringToCoTaskMemAnsi(Reserved3);
IntPtr num1 = pReserved1.TypeHandle.Value;
int num2 = \u0082\u00BB.\u0081\u0081((byte*) Marshal.GetHINSTANCE(pReserved1.Assembly.GetLoadedModules()[0]).ToPointer(), num1.ToPointer(), (int*) pReserved2.ToPointer(), (sbyte*) ptr.ToPointer(), AppDomain.CurrentDomain.Id);
if (ptr != IntPtr.Zero)
Marshal.FreeCoTaskMem(ptr);
if (num2 == 2)
{
this.\u0081\u00BD = pReserved1.Assembly;
this.\u0082\u00B4 = pReserved1.Assembly.GetName().Name;
int length = \u0082\u00BB.\u0081\u009B();
if (length != 0)
{
this.ò = new Assembly[length];
int index = 0;
if (0 < length)
{
do
{
this.ò[index] = (Assembly) null;
++index;
}
while (index < length);
}
}
}
return num2;
}
public virtual unsafe string DesignLicenseKey(Type pReserved1, string pReserved2)
{
IntPtr ptr = Marshal.AllocCoTaskMem(IntPtr.Size);
IntPtr coTaskMemAnsi = Marshal.StringToCoTaskMemAnsi(pReserved2);
\u0082\u00BB.Ý((byte*) Marshal.GetHINSTANCE(pReserved1.Assembly.GetLoadedModules()[0]).ToPointer(), (sbyte*) coTaskMemAnsi.ToPointer(), (sbyte**) ptr.ToPointer());
IntPtr num = Marshal.ReadIntPtr(ptr);
string str = (string) null;
if (num != IntPtr.Zero)
{
string stringAnsi = Marshal.PtrToStringAnsi(num);
Marshal.FreeHGlobal(num);
str = stringAnsi;
}
Marshal.FreeCoTaskMem(ptr);
if (!(coTaskMemAnsi != IntPtr.Zero))
return str;
Marshal.FreeCoTaskMem(coTaskMemAnsi);
return str;
}
[return: MarshalAs(UnmanagedType.U1)]
public virtual unsafe bool SameSoftware(Assembly pReserved, IntPtr pSoft, ulong SwMajor)
{
int num;
if (\u0082\u00BB.\u0081\u00A5((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), (sbyte*) pSoft.ToPointer(), SwMajor, &num) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return num != 0;
}
[return: MarshalAs(UnmanagedType.U1)]
public virtual unsafe bool IsLicensed(Assembly pReserved, string licenseKey, [MarshalAs(UnmanagedType.U1)] bool usb)
{
IntPtr coTaskMemAnsi = Marshal.StringToCoTaskMemAnsi(licenseKey);
int num1 = usb ? 1 : 0;
int num2 = \u0082\u00BB.\u0081ª((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), (sbyte*) coTaskMemAnsi.ToPointer(), num1);
if (coTaskMemAnsi != IntPtr.Zero)
Marshal.FreeCoTaskMem(coTaskMemAnsi);
return num2 != 0;
}
public virtual unsafe int HardwareScore(Assembly pReserved, ulong HwConfig1, ulong HwConfig2)
{
int num;
if (\u0082\u00BB.\u00A1((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), HwConfig1, HwConfig2, &num) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return num;
}
public virtual unsafe IntPtr GenProductKey(
Assembly pReserved,
IntPtr pKeys,
uint LicenseID,
ulong data)
{
sbyte* numPtr;
if (\u0082\u00BB.\u0081µ((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), pKeys.ToPointer(), LicenseID, data, &numPtr) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) numPtr;
}
public virtual unsafe IntPtr GenProductKey(
Assembly pReserved,
IntPtr pKeys,
uint LicenseID)
{
sbyte* numPtr;
if (\u0082\u00BB.\u0081µ((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), pKeys.ToPointer(), LicenseID, &numPtr) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) numPtr;
}
public virtual unsafe uint GetLicenseId(Assembly pReserved, IntPtr pProductKey)
{
uint licenseId;
if (\u0082\u00BB.\u0081\u00BC((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), (sbyte*) pProductKey.ToPointer(), &licenseId) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return licenseId;
}
public virtual unsafe ulong GetProductkeyData(Assembly pReserved, IntPtr pProductKey)
{
uint num;
ulong productkeyData;
if (\u0082\u00BB.\u0081\u00BC((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), (sbyte*) pProductKey.ToPointer(), &num, &productkeyData) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return productkeyData;
}
public virtual unsafe IntPtr DecodeActivationString(
Assembly pReserved,
IntPtr pKeys,
IntPtr pActivationString)
{
byte* numPtr;
if (\u0082\u00BB.\u0081Ä((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), pKeys.ToPointer(), (sbyte*) pActivationString.ToPointer(), &numPtr) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) numPtr;
}
public virtual unsafe IntPtr EncodeActivationRequest(Assembly pReserved, IntPtr preq)
{
sbyte* numPtr;
if (\u0082\u00BB.Ã((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), preq.ToPointer(), &numPtr) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) numPtr;
}
public virtual unsafe IntPtr GetConfig(
Assembly pReserved,
uint LicenseID,
ushort ActivationDuration)
{
sbyte* config;
if (\u0082\u00BB.\u0081Ñ((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), LicenseID, ActivationDuration, &config) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) config;
}
public virtual unsafe IntPtr GetConfig(
Assembly pReserved,
uint LicenseID,
ushort ActivationDuration,
IntPtr pAssemblyFile)
{
sbyte* config;
if (\u0082\u00BB.\u0081Ñ((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), LicenseID, ActivationDuration, (sbyte*) pAssemblyFile.ToPointer(), &config) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) config;
}
public virtual unsafe IntPtr GetConfig(
Assembly pReserved,
uint LicenseID,
ushort ActivationDuration,
AssemblyName Name)
{
string name = Name.Name;
byte[] bytes = Encoding.UTF8.GetBytes(string.Concat((object) "\0"));
GCHandle gcHandle = GCHandle.Alloc((object) bytes, GCHandleType.Pinned);
IntPtr num1 = Marshal.UnsafeAddrOfPinnedArrayElement((Array) bytes, 0);
sbyte* config;
int num2 = \u0082\u00BB.\u0081Ñ((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), LicenseID, ActivationDuration, (byte*) num1.ToPointer(), (ushort) Name.Version.Major, (ushort) Name.Version.Minor, &config);
gcHandle.Free();
if (num2 == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) config;
}
public virtual unsafe string GetThumbPrint(Assembly pReserved)
{
\u0081Ï ï;
if (\u0082\u00BB.\u0081\u00D7((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), (byte*) &ï) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
StringBuilder stringBuilder = new StringBuilder();
int num = 0;
do
{
// ISSUE: cast to a reference type
// ISSUE: explicit reference operation
stringBuilder.Append(string.Format("{0:x}", (object) ^(byte&) (num + (IntPtr) &ï)).PadLeft(2, '0'));
++num;
}
while (num < 20);
return stringBuilder.ToString();
}
public virtual unsafe byte[] GetConfigForDemo(Assembly pReserved)
{
uint length;
byte* numPtr;
if (\u0082\u00BB.\u0081\u00B4((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), &length, &numPtr) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
byte[] destination = new byte[(int) length];
IntPtr num = (IntPtr) (void*) numPtr;
Marshal.Copy(num, destination, 0, (int) length);
Marshal.FreeCoTaskMem(num);
return destination;
}
public virtual unsafe IntPtr GetUsbConfig(
Assembly pReserved,
uint LicenseID,
ushort ActivationDuration,
ulong UsbHash,
ulong UsbIdentity)
{
sbyte* usbConfig;
if (\u0082\u00BB.\u0081è((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), LicenseID, ActivationDuration, UsbHash, UsbIdentity, &usbConfig) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) usbConfig;
}
public virtual unsafe IntPtr GetUsbConfig(
Assembly pReserved,
uint LicenseID,
ushort ActivationDuration,
ulong UsbHash,
ulong UsbIdentity,
IntPtr pAssemblyFile)
{
sbyte* usbConfig;
if (\u0082\u00BB.\u0081è((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), LicenseID, ActivationDuration, UsbHash, UsbIdentity, (sbyte*) pAssemblyFile.ToPointer(), &usbConfig) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) usbConfig;
}
public virtual unsafe IntPtr GetUsbConfig(
Assembly pReserved,
uint LicenseID,
ushort ActivationDuration,
ulong UsbHash,
ulong UsbIdentity,
AssemblyName Name)
{
string name = Name.Name;
byte[] bytes = Encoding.UTF8.GetBytes(string.Concat((object) "\0"));
GCHandle gcHandle = GCHandle.Alloc((object) bytes, GCHandleType.Pinned);
IntPtr num1 = Marshal.UnsafeAddrOfPinnedArrayElement((Array) bytes, 0);
sbyte* usbConfig;
int num2 = \u0082\u00BB.\u0081è((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), LicenseID, ActivationDuration, UsbHash, UsbIdentity, (byte*) num1.ToPointer(), (ushort) Name.Version.Major, (ushort) Name.Version.Minor, &usbConfig);
gcHandle.Free();
if (num2 == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) usbConfig;
}
public virtual unsafe IntPtr GenerateLicense(
Assembly pReserved,
IntPtr pKeys,
IntPtr preq)
{
sbyte* license;
if (\u0082\u00BB.\u0081ð((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), pKeys.ToPointer(), preq.ToPointer(), &license) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) license;
}
public virtual unsafe IntPtr GenerateLicense(
Assembly pReserved,
IntPtr pKeys,
IntPtr preq,
int tolerance,
[MarshalAs(UnmanagedType.U1)] bool ignoreMinor,
long RuntimeLicensesLimit)
{
sbyte* license;
if (\u0082\u00BB.\u0081ð((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), pKeys.ToPointer(), preq.ToPointer(), tolerance, ignoreMinor ? 1 : 0, RuntimeLicensesLimit, &license) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) license;
}
public virtual unsafe IntPtr GenerateUsbLicense(
Assembly pReserved,
IntPtr pKeys,
IntPtr preq)
{
sbyte* usbLicense;
if (\u0082\u00BB.\u0081\u00AC((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), pKeys.ToPointer(), preq.ToPointer(), &usbLicense, (byte) 0) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) usbLicense;
}
public virtual unsafe IntPtr GenerateUsbLicense(
Assembly pReserved,
IntPtr pKeys,
IntPtr preq,
int tolerance,
[MarshalAs(UnmanagedType.U1)] bool ignoreMinor,
long RuntimeLicensesLimit)
{
sbyte* usbLicense;
if (\u0082\u00BB.\u0081\u00AC((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), pKeys.ToPointer(), preq.ToPointer(), tolerance, ignoreMinor ? 1 : 0, RuntimeLicensesLimit, &usbLicense, (byte) 0) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return (IntPtr) (void*) usbLicense;
}
public virtual unsafe Assembly ResolveAssembly(string Name)
{
// ISSUE: untyped stack allocation
int num1 = (int) __untypedstackalloc(\u0082\u00BB.Õ());
try
{
AssemblyName assemblyName = new AssemblyName(Name);
}
catch (Exception ex1) when (
{
// ISSUE: unable to correctly present filter
uint exceptionCode = (uint) Marshal.GetExceptionCode();
if (\u0082\u00BB.\u0082\u00AE((void*) Marshal.GetExceptionPointers(), (void*) 0, 0, (void*) 0) != 0)
{
SuccessfulFiltering;
}
else
throw;
}
)
{
uint num2 = 0;
\u0082\u00BB.\u0081\u009A((void*) Marshal.GetExceptionPointers(), (void*) num1);
try
{
try
{
return (Assembly) null;
}
catch (Exception ex2) when (
{
// ISSUE: unable to correctly present filter
num2 = (uint) \u0082\u00BB.\u0084((void*) Marshal.GetExceptionPointers());
if (num2 != 0U)
{
SuccessfulFiltering;
}
else
throw;
}
)
{
}
if (num2 != 0U)
throw;
}
finally
{
\u0082\u00BB.ã((void*) num1, (int) num2);
}
}
byte[] bytes = Encoding.UTF8.GetBytes(Name);
GCHandle gcHandle = GCHandle.Alloc((object) bytes, GCHandleType.Pinned);
IntPtr num3 = Marshal.UnsafeAddrOfPinnedArrayElement((Array) bytes, 0);
int index = \u0082\u00BB.\u0082\u0082(num3.ToPointer());
if (index >= 0)
{
Assembly[] ò = this.ò;
if (index < ò.Length)
{
if ((object) ò[index] == null)
this.ò[index] = this.\u0081â(num3);
gcHandle.Free();
return this.ò[index];
}
}
gcHandle.Free();
return new AssemblyName(Name).Name == this.\u0082\u00B4 ? this.\u0081\u00BD : (Assembly) null;
}
public virtual int ExecuteEmbLockAssembly(Type pReserved1, int Reserved2) => \u0081Ù.\u0081Ö(pReserved1.Assembly, Reserved2);
public virtual unsafe Assembly GetEmbLockAssembly(Type pReserved1)
{
byte* numPtr = (byte*) \u0082\u00BB.î((byte*) Marshal.GetHINSTANCE(pReserved1.Assembly.GetLoadedModules()[0]).ToPointer());
if ((IntPtr) numPtr == IntPtr.Zero)
return (Assembly) null;
IntPtr ptr = (IntPtr) (void*) numPtr;
int length1 = Marshal.ReadInt32(ptr);
IntPtr source = (IntPtr) (void*) (numPtr + 4);
byte[] rawAssembly = new byte[length1];
byte[] destination = rawAssembly;
int length2 = length1;
Marshal.Copy(source, destination, 0, length2);
Assembly embLockAssembly = Assembly.Load(rawAssembly);
Marshal.FreeCoTaskMem(ptr);
return embLockAssembly;
}
public virtual unsafe Assembly GetEmbLockAssemblyName(Type pReserved1)
{
byte* numPtr = (byte*) \u0082\u00BB.ô((byte*) Marshal.GetHINSTANCE(pReserved1.Assembly.GetLoadedModules()[0]).ToPointer());
if ((IntPtr) numPtr == IntPtr.Zero)
return (Assembly) null;
IntPtr ptr = (IntPtr) (void*) numPtr;
string stringAnsi = Marshal.PtrToStringAnsi(ptr);
Marshal.FreeCoTaskMem(ptr);
Assembly lockAssemblyName = (Assembly) null;
try
{
lockAssemblyName = Assembly.Load(stringAnsi);
}
catch (Exception ex)
{
}
return lockAssemblyName;
}
public virtual unsafe ArrayList GetEmbLockAssemblyServices(Type pReserved1)
{
byte* ptr1 = (byte*) \u0082\u00BB.\u0082\u008B((byte*) Marshal.GetHINSTANCE(pReserved1.Assembly.GetLoadedModules()[0]).ToPointer());
if ((IntPtr) ptr1 == IntPtr.Zero)
return (ArrayList) null;
IntPtr ptr2 = (IntPtr) (void*) ptr1;
ArrayList assemblyServices = new ArrayList();
if (*ptr1 != (byte) 0)
{
do
{
string stringAnsi = Marshal.PtrToStringAnsi((IntPtr) (void*) ptr1);
assemblyServices.Add((object) stringAnsi);
ptr1 = (byte*) (stringAnsi.Length + (IntPtr) ptr1 + 1);
}
while (*ptr1 != (byte) 0);
}
Marshal.FreeCoTaskMem(ptr2);
return assemblyServices;
}
[return: MarshalAs(UnmanagedType.U1)]
public virtual unsafe bool ProductKeyChecksumIsOk(Assembly pReserved, IntPtr pString)
{
int num;
if (\u0082\u00BB.\u0082\u0096((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), (sbyte*) pString.ToPointer(), &num) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return num != 0;
}
[return: MarshalAs(UnmanagedType.U1)]
public virtual unsafe bool ConfigStringChecksumIsOk(Assembly pReserved, IntPtr pString)
{
int num;
if (\u0082\u00BB.\u0082\u00A1((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), (sbyte*) pString.ToPointer(), &num) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return num != 0;
}
[return: MarshalAs(UnmanagedType.U1)]
public virtual unsafe bool LicenseKeyChecksumIsOk(Assembly pReserved, IntPtr pString)
{
int num;
if (\u0082\u00BB.\u0081Ø((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), (sbyte*) pString.ToPointer(), &num) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return num != 0;
}
[return: MarshalAs(UnmanagedType.U1)]
public virtual unsafe bool IsDemo(Assembly pReserved)
{
int num;
if (\u0082\u00BB.\u0082\u00AB((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), &num) == 0)
throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
return num != 0;
}
public virtual unsafe int DaysLeft(Assembly pReserved)
{
int num;
return \u0082\u00BB.\u0082\u00AF((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), &num) != 0 ? num : throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
}
public virtual unsafe int MinutesLeft(Assembly pReserved)
{
int num;
return \u0082\u00BB.\u0082\u00B9((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), &num) != 0 ? num : throw new LicenseException(typeof (PvLogiciels.dotNetProtector.Runtime));
}
public virtual unsafe uint GetProductID(Assembly pReserved) => \u0082\u00BB.\u0082((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer());
public virtual void UnloadAppdomain(AppDomain domain)
{
int id = domain.Id;
AppDomain.Unload(domain);
\u0082\u00BB.\u0095(id);
}
public virtual unsafe IntPtr StartUsbDetect() => (IntPtr) \u0082\u00BB.\u0081ø();
public virtual unsafe void EndUsbDetect(IntPtr handle) => \u0082\u00BB.\u008B(handle.ToPointer());
public virtual unsafe IntPtr LoadNativeLibrary(Assembly pReserved, IntPtr[] pointers)
{
GCHandle gcHandle = GCHandle.Alloc((object) pointers, GCHandleType.Pinned);
IntPtr num1 = Marshal.UnsafeAddrOfPinnedArrayElement((Array) pointers, 0);
IntPtr num2 = (IntPtr) \u0082\u00BB.\u0082\u0087((byte*) Marshal.GetHINSTANCE(pReserved.GetLoadedModules()[0]).ToPointer(), (void**) num1.ToPointer());
gcHandle.Free();
return num2;
}
public virtual unsafe void FreeNativeLibrary(IntPtr pLib) => \u0082\u00BB.\u0096(pLib.ToPointer());
public virtual StackFrame[] GetFrames(StackTrace trace) => trace == null ? new StackFrame[0] : trace.GetFrames();
public virtual unsafe void EncodeTrace(Guid[] Guids, long[] Indexes, IntPtr[] Handles)
{
GCHandle gcHandle1 = GCHandle.Alloc((object) Guids, GCHandleType.Pinned);
GCHandle gcHandle2 = GCHandle.Alloc((object) Indexes, GCHandleType.Pinned);
GCHandle gcHandle3 = GCHandle.Alloc((object) Handles, GCHandleType.Pinned);
IntPtr num1 = Marshal.UnsafeAddrOfPinnedArrayElement((Array) Guids, 0);
IntPtr num2 = Marshal.UnsafeAddrOfPinnedArrayElement((Array) Indexes, 0);
IntPtr num3 = Marshal.UnsafeAddrOfPinnedArrayElement((Array) Handles, 0);
\u0082\u00BB.\u0098(Handles.Length, num3.ToPointer(), num2.ToPointer(), num1.ToPointer());
gcHandle1.Free();
gcHandle2.Free();
gcHandle3.Free();
}
}
}