?

Log in

No account? Create an account
однозначно хак года: вычисления без вычислений - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

однозначно хак года: вычисления без вычислений [фев. 23, 2013|03:36 pm]
Anatoly Vorobey
[Tags|]

(может быть интересно в основном программистам)

Вот очень странный и невероятно крутой хак: trapcc - вычисление без единой инструкции CPU.

Авторы продемонстрировали, что механизм трансляции адресов на архитектуре x86 обладает полнотой Тьюринга, т.е. с его помощью можно реализовать любой алгоритм. С помощью хитрой настройки различных контрольных таблиц, которыми пользуется процессор, они вводят процессор в состояние, в котором он не может выполнить ни одной инструкции, т.к. непрерывно происходят исключения, но разные исключения в зависимости от приготовленных данных - и таким образом процессор вычисляет!

Известно, что одной инструкции условного перехода по вычитанию (вычисли a = a-b, и если это меньше или равно нуля, перейди в c) достаточно для Тьюринг-полноты. В этом хаке такая инструкция симулируется с помощью последовательности page faults (от невозможности загрузить данные), которая заканчивается double fault (когда указатель на стек уменьшается ниже нуля).

Несколько более подробное объяснение - в этом комментарии.

Любопытно, что ни один существующий эмулятор x86 не мог правильно запустить этот хак, потому что он опирается на слишком извращенную конфигурацию контрольных таблиц, и на тонкие нюансы поведения процессора в этой извращенной конфигурации. В итоге они смогли подстроиться под эмулятор Bochs.

Как ни странно, у всего этого даже есть практические применения, правда, в области, которая ничего хорошего и полезного миру не приносит - обнаружение того, что программа бежит под отладчиком или в виртуальной машине. Ну а так - это просто неимоверно круто и красиво.
СсылкаОтветить

Comments:
[User Picture]From: burrru
2013-02-23 01:57 pm
Обалдеть!
(Ответить) (Thread)
[User Picture]From: substractor
2013-02-23 02:10 pm
Что может быть красивее сферического коня в вакууме...
(Ответить) (Thread)
[User Picture]From: romikchef
2013-02-23 06:56 pm
феерического коня в вакууме :)
(Ответить) (Parent) (Thread)
[User Picture]From: staerum
2013-02-23 03:22 pm

pure awesome

yo dawg, I herd you like computing, so I put an computer in your computer so you can compute while you compute
(Ответить) (Thread)
[User Picture]From: spamsink
2013-02-23 04:55 pm
Надеюсь, что в следующих версиях процессоров дырка будет закрыта, и triple fault будет определен более строго. :)
(Ответить) (Thread)
[User Picture]From: _winnie
2013-02-23 05:12 pm
> однозначно хак года
Текущего календарного года или за предыдущие 365 дней?
(Ответить) (Thread)
[User Picture]From: janatem
2013-02-23 05:53 pm
> которая ничего хорошего и полезного миру не приносит
Отличная оговорка!
(Ответить) (Thread)
[User Picture]From: nec_p1us_u1tra
2013-02-23 06:28 pm
Почему оговорка?
Программа, которая хочет знать, не смотрят ли на нее дебаггером, не имеет в виду ничего хорошего.
(Ответить) (Parent) (Thread)
[User Picture]From: janatem
2013-02-23 07:03 pm
Так я примерно это же и выразил (оговорка не в смысле сказал не то, что хотел, а то, что выражается придаточным предложением после слов «хотя», «правда» и т.п.).

Где-то попадались похожие рассуждения про технологию оптической невидимости. Что, мол, это всё очень интересно, но никакой практической пользы она не принесет, только для шпионажа и войны.
(Ответить) (Parent) (Thread)
[User Picture]From: ircicq
2013-02-23 07:18 pm
Производители эмулирующих дебаггеров на месте не стоят.
Уж коли хак описан, уточнят эмуляцию MMU.
(Ответить) (Thread)
From: drw
2013-02-23 08:53 pm
Как оно в память-то пишет?
(Ответить) (Thread)
From: huzhepidarasa
2013-02-23 10:48 pm
hardware writes fault info on the stack -
where it thinks the stack is (address in TSS) (цитата из их слайдов)
(Ответить) (Parent) (Thread)
[User Picture]From: kray_zemli
2013-02-23 11:58 pm
Ну всё, ща пойдут бут-вирусы, запакованные таким паковщиком. Ни один антивирус не раскусит.
(Ответить) (Thread)
[User Picture]From: dartamon
2013-02-24 06:10 am
Visual Basic for Applications делал распознование булевых значений исключениями еще много лет назад (Тру = 0, Фолс = -1). Ничего тут толком нового.
(Ответить) (Thread)
[User Picture]From: netp_npokon
2013-02-25 10:07 am
В зависимости от того, как выпадут звезды, разным людям гугл может показать разную статистику по запросам. Поэкспериментируйте на досуге, очень интересно.

Алсо, статистика не очень интересная, потому что к компьютерным программам тут добавляются всякие правительственные программы, и отсеять их довольно трудно.
(Ответить) (Parent) (Thread)
From: bam_77
2013-03-02 07:57 pm
почти ничего не понял, но очевидно, что можно по аналогии создать алгоритм, который позволит узнать - не живем ли мы в Матрице )
(Ответить) (Thread)