Size: a a a

Chaos Constructions Demo/Retro

2020 April 12

ЕК

Евгений Красников (Jin X) in Chaos Constructions Demo/Retro
Давай начнём чуть раньше. В каких случаях это может применяться?
Когда нужно получить доступ к защищённой памяти (скажем, код выполняется из ядра)?
Или когда мы не знаем адреса данных, но имеет доступ к памяти?
Или ещё в каких-то случаях?
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
Евгений Красников (Jin X)
Давай начнём чуть раньше. В каких случаях это может применяться?
Когда нужно получить доступ к защищённой памяти (скажем, код выполняется из ядра)?
Или когда мы не знаем адреса данных, но имеет доступ к памяти?
Или ещё в каких-то случаях?
первое
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
мы примерно можем представить где лежат данные ядра\другого процесса, но прочитать их не можем
источник

ЕК

Евгений Красников (Jin X) in Chaos Constructions Demo/Retro
Ну и как мы прочитаем их по этой технологии, я чё-т не догнал всё равно :)
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
там есть еще одно условие
источник

SR

Shamil Randuev in Chaos Constructions Demo/Retro
источник

DS

Dolphin Soft in Chaos Constructions Demo/Retro
Artem Vasilev
там есть еще одно условие
Ты про хамеррайт?
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
Dolphin Soft
Ты про хамеррайт?
нене
источник

DS

Dolphin Soft in Chaos Constructions Demo/Retro
😺
источник

A

Anton "Dart" Nikolaev in Chaos Constructions Demo/Retro
Artem Vasilev
при спекулятивном исполнении проц для ускорения одновременно выполняет и taken и non-taken ветку, затем как условие вычислится, результат ненужной ветки отбрасывается
Всё так, но там вроде еще был - нюанс, что систему предсказания (branch prediction) сначала нужно натренировать, чтобы проц начал выполнять две ветки вместо одной, по инерции ))
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
если проверка прав доступа идет не после фетча из памяти, когда данные уже почти лежат в регистрах, а до него, то есть даже до оперативы не успели достучаться, то трюк не сработает
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
Anton "Dart" Nikolaev
Всё так, но там вроде еще был - нюанс, что систему предсказания (branch prediction) сначала нужно натренировать, чтобы проц начал выполнять две ветки вместо одной, по инерции ))
и это тоже :)
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
у amd проверки идут перед чтением из озу, у интела до 9xxx - после
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
поэтому вроде бы данные выдать не успели, но кэш уже прогрет
источник

ЕК

Евгений Красников (Jin X) in Chaos Constructions Demo/Retro
Ну допустим прогрет, а как данные из него вытащить-то?
источник

DS

Dolphin Soft in Chaos Constructions Demo/Retro
Зачем их вытаскивать?
источник

DS

Dolphin Soft in Chaos Constructions Demo/Retro
он сам их оттуда возмет
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
Евгений Красников (Jin X)
Ну допустим прогрет, а как данные из него вытащить-то?
через замер времени доступа к памяти
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
но память размеется проверяется наша, то есть нужно передать в кернелмод адрес нашей контролируемой памяти, чтобы там она "прогрелась"
источник

A

Anton "Dart" Nikolaev in Chaos Constructions Demo/Retro
Евгений Красников (Jin X)
Ну допустим прогрет, а как данные из него вытащить-то?
источник