Внедряем свой код в любой метод. Даже вместо third party библиотек или даже фреймворка

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 ก.ย. 2024

ความคิดเห็น • 27

  • @Jo-wl1wo
    @Jo-wl1wo ปีที่แล้ว +2

    Спасибо за видос! Познакомился с harmony, когда делал мод для RimWorld. Собственно эту либу часто используют для модов в играх на Unity. Однако, в своих проектах не рекомендую использовать эту либу, юзер всегда найдет калькулятор, на котором все крашнет, а сервер упадет при обнове. А вот тесты - отличный кейс. Спасибо автору за просвещение!

  • @user-qm1ih8yg8t
    @user-qm1ih8yg8t ปีที่แล้ว +2

    Я вот разрабатывал 15 лет и теперь менеджер, уже года 3. Смотрю эти нежные срачи с базерами и кишки CLR и слёзы счастья и ностальгии 🥲 наворачиваются на глаза. Спасибо огромное!

  • @nikitabukov1292
    @nikitabukov1292 ปีที่แล้ว +2

    Интересные совпадения в моей жизни. Начал недавно трогать АОП и тут ты видео выпускаешь). Не в первый раз тема которую я начинаю трогать совпадает с видео которое ты выпускаешь

    • @DevJungles
      @DevJungles  ปีที่แล้ว +2

      Ахах))
      Все очень просто: используя техники из этого видео я переопредил твой процесс мышления))

    • @nikitabukov1292
      @nikitabukov1292 ปีที่แล้ว

      @@DevJungles ну надеюсь в прод я это не потащу)) пока что..

  • @dengari1
    @dengari1 ปีที่แล้ว +2

    Блин, кто то заморачивается с инжектом двухфакторной аутентификацией в конекшен к базе, а кто то даже пароли не хэширует и в добавок еще и базу умудряются слить
    П.С. Видео очень интресное, хоть и мало применимо в реальной жизни

    • @DevJungles
      @DevJungles  ปีที่แล้ว

      Не то что бы совсем неприменимо, но скорее используется внутри либ)

  • @pavelromashuk237
    @pavelromashuk237 ปีที่แล้ว +1

    Если бы еще шрифт был побольше, вообще огонь было бы. А то выколи глаз)). Спасибо за видео.

    • @DevJungles
      @DevJungles  ปีที่แล้ว

      Заметано))

  • @Alex-qt9oo
    @Alex-qt9oo ปีที่แล้ว +1

    🙂🙂🤨🤨😮😮😲😲

  • @Ar6yZuK
    @Ar6yZuK ปีที่แล้ว +6

    Ты играешь в C++ на C#?

    • @DevJungles
      @DevJungles  ปีที่แล้ว

      Ахаха)
      Хорошо сказал!)

  • @alexsaxs5566
    @alexsaxs5566 ปีที่แล้ว +2

    Было бы классно послушать от тебя про всю асинхронность и многопоточность. Как работает/где использовать/где не использовать. Как работать с блокировками, когда их применять, примитивы разобрать. Хотябы поверхностно по этому всему пройтись, без стейт машин и ассемблера. Я смотрел твой стрим про развитие асинхронной модели, но это не совсем то. Очень не хватает понятного туториала по всем этим вещам, а ведь это одна из главных фишек шарпа, все остальные по крупицам рассказывают и влезают в дебри ассемблера с IL.

    • @DevJungles
      @DevJungles  ปีที่แล้ว

      Да...
      Я думаю как это лучше сделать.
      Два захода уже были, но оба не совсем туда, да и не сказать, что хорошо вышли
      Пока не придумал как именно это рассказать лучше

  • @Ar6yZuK
    @Ar6yZuK ปีที่แล้ว +1

    Лайк влипил

  • @dr1n
    @dr1n ปีที่แล้ว +1

    Хороший пример, но использовать такое в проде категорически нельзя. Разве только для исследований :)

  • @recstazy
    @recstazy ปีที่แล้ว +1

    Главное не показывайте это менеджерам

  • @antonkosenkopro
    @antonkosenkopro ปีที่แล้ว

    У нас тут производственная проблема - MS сделала одну каку - создала публичный класс с internal конструктором. А нам ой как хочется от него отнаследоваться. Мы сейчас ведём холивар с MS по этому поводу, но это история долгая, а хочется уже сейчас. И в контексте этого стрима показалось, что можно рассмотреннными методами достичь желаемого. Так вот вопрос - а можно ли? И лучше так, чтобы извне это не было заметно, т.е. наш класс выглядел как наследник этого хитро-запечатанного.

    • @DevJungles
      @DevJungles  ปีที่แล้ว

      Если честно, именно в случае наследования не приходилось обходить....
      Тут может можно где-то подменить создание и обернуть исходный класс в ваш реализуя тот же интерфейс?..

  • @maxpetrochenko5025
    @maxpetrochenko5025 ปีที่แล้ว

    видос отличный, но не совсем понял часть с аутентификацией с базой. это что-то типа распределенных серверов, где база лежит в одном месте, а бэк в другом/других?

    • @DevJungles
      @DevJungles  ปีที่แล้ว

      Да без разницы в общем-то.
      Тут ребята хотели сотворить дополнительный слой защиты, там, где он не предусмотрен.

  • @sergeypavlov3592
    @sergeypavlov3592 ปีที่แล้ว

    А это работает в линукс докер образе?

    • @DevJungles
      @DevJungles  ปีที่แล้ว

      Да
      Тут никаких завязок на ОС

  • @igiarbl
    @igiarbl ปีที่แล้ว

    А расширение для SSMS тоже было на C# ?

  • @michailosipov9011
    @michailosipov9011 ปีที่แล้ว

    привет! попробовал повторить в домашних условиях, всё получилось, но если попробовать поменять Console.WriteLine выдаёт ошибку System.AccessViolationException. Может есть способы решения проблемы ? код прикладываю ниже
    public class Parogram
    {
    static void Main(string[] args)
    {
    Console.WriteLine("Stupid old console..");
    DoSomeScaryShit();
    Console.ReadLine();
    }
    public static void DoSomeScaryShit()
    {
    var source = typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) });
    var dest = typeof(A2).GetMethod("MyWriteLine");
    IllifalOverride(source, dest);
    Console.WriteLine("New Console works!");
    }
    private static unsafe void IllifalOverride(MethodBase source, MethodBase dest)
    {
    var fp1 = source.MethodHandle.GetFunctionPointer();
    var fp2 = dest.MethodHandle.GetFunctionPointer();
    //проджитим это дело
    RuntimeHelpers.PrepareMethod(source.MethodHandle);
    RuntimeHelpers.PrepareMethod(dest.MethodHandle);
    var f1Ptr = (byte*)fp1.ToPointer();
    var f2Ptr = (byte*)fp2.ToPointer();
    var sJump = (uint)f1Ptr + 1 + 4;
    *(uint*)(f1Ptr + 1) = (uint)(f2Ptr - sJump);
    }
    }
    public class A2
    {
    public static void MyWriteLine(string message)
    {
    Console.Write(message + '
    ');
    }
    }

    • @DevJungles
      @DevJungles  ปีที่แล้ว

      Там хватает каких-то разных мелких нюансов.
      Можно попробовать вот этот метод или покурить исходники Harmony: github.com/pardeike/Harmony/blob/bb0fa4f9f792195daa54adc181543c1c65d72bf3/Harmony/Internal/Memory.cs#L32