Я новичок в z3py.
Я занимаюсь обратным проектированием кода, в котором у меня есть два QWORD, хранящихся в регистрах XMM.
И с ним выполняются различные операции.
Допустим, мне нужно найти 2 qwords, p1 и p2, учитывая следующие уравнения:
x = p1 + p2
y = p1 ^ p2
if x == r1 and y == r2:
print p1, p2
Примечание: P1 и P2 - это QWORD, которые фактически представляют 8-символьную строку ASCII.Итак, P1 - это массив из 8 байтов, где каждый байт соответствует значению ASCII печатного символа.
Я написал следующий код:
#! /usr/bin/python
from z3 import *
s = Solver()
a = BitVec('a', 64)
b = BitVec('b', 64)
s.add(a + b == result1)
s.add(a ^ b == result2)
if s.check():
print(s.model())
Вопрос:
Я думаю, что в моем случае не следует использовать BitVec для представления QWORD, поскольку я знаю, что каждый байт QWORD соответствует печатному символу ASCII.Итак, как мне представить мои данные?