Приемы, облегчающие работу противника. Часть 5.

Posted by: admin  :  Category: Приемы облегчающие работу противника

Если для какого-то языка нет описания кодов операций, но этим языком пользуется довольно много программистов, рано или поздно кто-то задастся целью разобраться в деталях псевдокода и разработает весь необходимый инструментарий.

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

Прежде всего, исследователь может компилировать любые примеры и смотреть, в какой псевдокод будут превращаться команды. Это очень важно, т. к. внося незначительные изменения в исходный текст и анализирую разницу в оттранслированном псевдокоде, гораздо легче устанавливать закономерности, чем внося изменения в псевдокод и контролируя изменения в поведении виртуальной машины.

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

Вдобавок система команд виртуальной машины редко бывает очень сложной. Это на реальном процессоре обнулить регистр еах можно несколькими способами, например:

sub еах, еах; хог еах, еах; and еах, еах; mov еах, 0.

А в виртуальной машине такая избыточность не имеет смысла.

И, наконец, виртуальная машина, являющаяся частью языка программирования, не разрабатывается как запутанное логическое устройство, работа которого никогда не должна быть проанализирована противником. Напротив, чем проще будет организована виртуальная машина, тем легче будет ее отлаживать и оптимизировать.

Leave a Reply

лучший хостинг