Pull to refresh

Comments 7

Удивлён отсутствию проверки попдиси M$ на драйвере для хотпатча…
Скажите, а за счет чего достигается потокобезопасность при переписывании mod edi, edi на короткий джамп?
Атомарные операции.
Адрес точки входа, соответственно, должен быть четным, чтобы слово переписалось за один цикл шины — или для современных систем это уже неактуально, не знаю
Скорее всего, используется LOCK, который блокирует шину на столько циклов, сколько надо, чтобы операция завершилась.
Это вопрос оптимизации скорости доступа, но работать должно и на невыровненых адресах. Так как hotpatching — разовая операция, это не имеет значения.
Судя по описанному тут, процесс на время непосредственного применения хотпатча занимает все CPU в системе.
Это, судя по всему, нужно не просто для потокобезопасности (тут простого interlocked exchange'а с lock префиксом хватило бы), а для того, чтобы другим потоком не был инициирован системный вызов, который уже пропатчен, но вызывает другую фнукцию, к которой патч еще не применен.
Sign up to leave a comment.

Articles