Метод и средства защиты исполняемого программного кода от динамического и статического анализа


Download 482 Kb.
bet9/20
Sana18.06.2023
Hajmi482 Kb.
#1555637
TuriРеферат
1   ...   5   6   7   8   9   10   11   12   ...   20
Bog'liq
Аранов, Владислав Юрьевич

shl32_rr regl, reg2
shrl6_ri гедб, 13


45




shr32_rri reg3, reg5, 34
rol64_ri reg7, 21
ror8_mr [OOOOh], reg5
Таким образом, число команд сдвигов превышает 1000.


  1. Класс операций для работы со стеком

Стек - это способ хранения данных. В языке виртуальных машин можно выделить 2 группы команд работы со стеком: команды, которые кладут новую порцию данных на верхушку стека (STORE), и команды которые получают данные с вершины стека (LOAD). Использование стека позволяет сохранять данные в памяти, не заботясь об их абсолютных адресах.
Пример вызова этих функций: команда вызова функции CALL32 func записывает в стек адрес следующей за ней команды, а команда возврата RET достает его из стека.
Формально стек ограничен лишь протяженностью адресного пространства. Направление роста стека: от больших адресов — к меньшим. Еще говорят, что стек растет снизу вверх.
Если генерируемая виртуальная машина принадлежит к классу регистровых виртуальных машин, то класс операций работы со стеком аналогичен языку ассемблер: виртуальные машины могут класть в стек или брать из стека как регистры, так и переменные.
Если же генерируемая виртуальная машина принадлежит классу стековых виртуальных машин, то класс операций работы со стеком немного иной. Для стековых виртуальных машин не существует отдельных операций, которые кладут в стек значения переменных или констант, так как они сами по себе являются командами вставки в стек, как описано в п.3.4.1.
Для регистровой машины эти инструкции содержат два операнда: первый - регистр, в который загружается в стек (которое загружается из стека), второй - значение сдвига. Для создания множества инструкций работы со стеком варьируются следующие параметры операндов:

  • размер регистра (первый операнд) - он может быть одним из следующих: 8,16,32, 64, 80 бит.

  • величина переменной, хранящей смещение (второй операнд) — он может быть 8,16 или 32 бит.

Примеры инструкций работы со стеком:
load80_16 гедЗ, 4
loadl6_8 regl, 8

Download 482 Kb.

Do'stlaringiz bilan baham:
1   ...   5   6   7   8   9   10   11   12   ...   20




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling