Можем ли мы определить наш вход BitVec () в Z3 таким образом, чтобы мы знали часть входных данных, а другую часть мы хотим, чтобы Z3 решал?
В качестве примера в приведенном ниже коде я определяю битовый вектор для представления строки из 10 символов.
from z3 import *
s = Solver()
input = [BitVec("input%s" % i, 8) for i in range(10)]
s.add(gen(input) == 0xAABBCCDD)
В приведенном выше примере gen () - это функция, которая генерирует DWORD с использованием входных данных.
Теперь, скажем, я уже знаю несколько первых символов ввода. Например, ввод всегда имеет формат: CHECKXXXXX.
где, X - неизвестные символы.
Как я могу теперь определить ввод в Z3, чтобы воспользоваться известными символами?