Size: a a a

2021 April 17

V

Vyacheslav in pro.net
@EgorBo Привет. Прошу прощения за то что тегаю напрямую.
Экспериментирую с хуками немного в C#
Нашел PoC чувака (этот). Он работает на .NET Framework, пытаюсь перевести его на .NET Core
На .NET Core работает хук managed метода, но вот вызов unmanaged падает с AccessViolation
Мой вопрос в чем: он пишет ассемблерные инструкции, "trampoline hook", но я не могу понять что за ассемблерные инструкции он пишет туда.
0x49/0xbb не могу найти в x86 asm reference
зато могу найти 0xe3/0xff что собственно и является JMP
почему они в конце? замешана little/big endianness?
источник

A

Aloraman in pro.net
А Егор не в отпуске?
источник

V

Vyacheslav in pro.net
Не знаю, на самом деле. Если кто-то еще может помочь я буду рад. Просто знаю что @EgorBo точно шарит)
источник
2021 April 18

VM

Vladimir Murashkin in pro.net
В коде с DequeueConcurrent ты ж не выгребаешь все элементы, часть останется в очереди, если сначала будешь доставать, а потом складывать. С блокирующей коллекцией достанешь все. Можно написать на массиве, как ты и предлагал,б удет рингбуффер, блок при полном заполнении и блок на ожидании следующего, если коллекция пустая. Мб то на то и выйдет.
источник

G

Gtoressan in pro.net
Имеют ли смысл приватные свойства в классе?
источник

IC

Ilya L Che in pro.net
А что такое приватный класс? Вложенный, что ли?
источник

G

Gtoressan in pro.net
Сори, оговорился, приватные свойства в классе
источник

V

Vyacheslav in pro.net
Имеют. Ты можешь например добавить ограничения на значение.
источник

IC

Ilya L Che in pro.net
Для ленивой инициализации можно.
источник

V

Vyacheslav in pro.net
Вот тоже верно. Иногда Lazy<T> спасает. Иногда лучше свойство использовать.
источник

V

Vyacheslav in pro.net
Представь, тебе нужно ограничить значение так, что бы юзер не мог использовать значение больше 30.
источник

IC

Ilya L Che in pro.net
А ещё оптимизации же. Свойство с большей вероятностью оптимизируется, чем readonly :D
источник

V

Vyacheslav in pro.net
private int backingField;
private int Value {
  get => backingField;
  set {
        if(value > 30) value = 30;
        backingField = value;
  }
}
источник

V

Vyacheslav in pro.net
Да? Не знал, можно где-то про это почитать?
источник

IC

Ilya L Che in pro.net
Сейчас найду. Там Котаз в тему ревью нового апи приходил и исправлял.
источник

IC

Ilya L Che in pro.net
источник

V

Vyacheslav in pro.net
Спасибо!
источник

V

Vyacheslav in pro.net
Кстати, никто не знает какое соглашение вызовов используется у сгенерированных JIT'ом методов?
источник

V

Vyacheslav in pro.net
И можно ли задать кастомное соглашение вызова для определенного метода, например атрибутом?
источник

S

SeanWoo in pro.net
У меня один вопрос. Зачем?
источник