angr: добавить ограничение на адрес загрузки в состояние - PullRequest
0 голосов
/ 13 июля 2020

Этот вопрос относится к платформе c symboli angr. В частности, я хочу задать два вопроса:

  1. Как найти выражение symboli c для адресного операнда инструкции загрузки?
  2. Как добавить ограничение к состоянию , где вышеупомянутый адрес - известное значение?

Чтобы дать больше информации, я использую Simulation Manager, где в любой момент есть список состояний в stashes. Давайте рассмотрим любое конкретное состояние st0. В этом состоянии хранится состояние символа c в соответствии с последовательностью инструкций, ведущих к последней инструкции, например, загрузка mov (rdx), rax. Теперь внешняя информация (которой angr не обладает) сообщила мне, что на самом деле получен доступ к адресу 0xdeadbeef.

Таким образом, я думаю, что мне нужно сделать следующие шаги:

  1. Из s0.addr определите инструкцию и ее адресный операнд. Отсюда я получаю символьный c битовый вектор для s0.regs._rax. Вопрос в основном в том, как мне выяснить, что адрес, используемый загрузкой, был rax?
  2. Добавьте ограничение, которое rax == 0xdeadbeef. К счастью, состояние angr имеет приятную функцию add_constraint. Вопрос в том, как мне express сделать свое ограничение в коде?
...