#DevJungles #dotnet #ityoutubersru Telegram канал Dev Jungles - Поддержать канал можно: - Спонсорством на YouTube - Переводом на карту или пополнением банки монобанка: Dev Jungles YouTube Channel Fund Номер карты банки: 5375 4112 0230 1466 - Или криптой: BTC - 18C3jsFYwviN5FvzpAt4uMWRfUeVKvdWxy ETH - 0x2903f63ba9009732272e91a299053b9d7b623216 USDT on ERC20 - 0x2903f63ba9009732272e91a299053b9d7b623216 USDT on TRC20 - TSmS5RzQKbWdxZkoM2oRo9HK8FYBaq744T LTC - LN3CkrnvZLZTXDUhqTy1gUKMVpLjEPA4G2 DOGE - DPwon439jf3axVSBwyuXso6z7CivuJF655 AAVE - 0x2903f63ba9009732272e91a299053b9d7b623216 Waves - 3P8D57Zw7CrqW2o7dHpvZR2UzAzQRFA2kZd Буду рассказывать про то, как CLR загружает и выполняет код в памяти, будем смотреть ассемблерные листинги, и даже сможем сделать override для sealed метода. Как вам такое? А еще эти трюки пригодятся, для того что бы написать плагин к какой то программе, которая вообще-то не предусматривает написание плагинов. Вы знаете как можно замокать статический метод? Наверняка скажите, что Moq или NSubstiture это умеют, но как это работает под капотом? А что делать если в системной библиотеке оказалась проблема: где найти рычажки, что бы влезть в это и исправить? А еще вам сюда, если вам по зарез как нужно пропатчить что-нибудь от чего у вас нет исходников! Расскажу как это можно сделать! Будем ковырятся и в листингам памяти и в ASM, посмотрим как JIT раскладывает методы в оперативной памяти. Таймкоды: 00:00 - Начало стрима 00:45 - Как работает .Net 11:30 - Работа JIT - компилятора 21:00 - Проверка полученной информации на практике 25:00 - Просмотр работы JIT в DisAssambly 34:00 - Сколько занимает Jitting 41:00 - Пример из жизни когда Ngen помог уделать конкурентов 43:30 - Как ovveridе-ить метод в sealed классах 47:40 - GetFunctionPointer и для чего он нужен 48:50 - Принудительный Jitting методов 50:00 - void* - что ты такое? 51:00 - Добавляем unsafe 52:55 - Объяснение как заоверрайдить метод в sealed классе 59:05 - Проверка override 59:30 - Почему в проекте с оверрайдом моков не надо включать unsafe 1:02:30 - Как сделать ovveride и сохранить возможность вызова базового метода 1:09:30 - Библиотека 1:14:20 - Для чего это вообще нужно 1:15:40 - Пример использования 1:22:40 - Почему этот стрим нельзя показывать вашим менеджерам 1:22:58 - Как работает метод Patch 1:27:20 - Как получить все ссылки на объект 1:36:50 - Кто разработал Harmony 1:43:00 - Когда это все использовалось на практике
Hide player controls
Hide resume playing