Можем ли мы определить наш вход 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, чтобы использовать преимущества известных символов?