Загрузка...

Метод для подгрузки всех найденных библиотек в ресурсах

Тема в разделе C# создана пользователем r3xq1 21 окт 2021. 196 просмотров

  1. r3xq1
    r3xq1 Автор темы 21 окт 2021 https://t.me/DarkSoft_Extra 119 27 июл 2018
    Код
         using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Reflection;
    using System.Resources;
    using Properties;

    public static class ResLib
    {
    private static readonly HashSet<string> resolvedAssemblies = new HashSet<string>();

    /// <summary>
    /// Метод для подгрузки всех найденных библиотек в ресурсах
    /// </summary>
    public static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
    if (!resolvedAssemblies.Contains(args.Name))
    {
    resolvedAssemblies.Add(args.Name);

    string resourceName = string.Empty;
    var missingAssembly = new AssemblyName(args.Name);
    if (missingAssembly.Name.Contains("-") || missingAssembly.Name.EndsWith(".dll"))
    {
    CultureInfo ci = missingAssembly.CultureInfo;
    resourceName = $"{missingAssembly.Name.Replace('.', '_')}_{ci.Name.Replace('-', '_')}";
    }
    if (!missingAssembly.Name.Contains("-") || missingAssembly.Name.EndsWith(".dll"))
    {
    resourceName = $"{missingAssembly.Name.Replace('.', '_')}";
    }

    ResourceManager rm = Resources.ResourceManager;
    byte[] asmBytes = (byte[])rm?.GetObject(resourceName);
    if (asmBytes != null) { return Assembly.Load(asmBytes); }
    }
    return null;
    }
    }
    Вызывается так:
    Код
    AppDomain.CurrentDomain.AssemblyResolve += ResLib.CurrentDomain_AssemblyResolve;
     
  2. CoderVir
    Можно в билдер добавить(dnlib) и в автомате подгрузит. Хотя хз. (видел подобную реализацию в одном обфусе через Foreach(строчек 6-7)).
    --- Сообщение объединено с предыдущим 21 окт 2021
    Моя реализация [IMG] Я думаю так проще. кстати способ как вариант вынести библиотеки за софт(на гитхаб мб), и просто качать byte[] в нужный момент. Либо просто делать динамическую подгрузку и использование методов библиотеки без юсингов тоже через Ассамблею.
    [IMG]
     
Загрузка...
Top