Я хочу изменить значение Op инструкции, используя idautils и/или idaapi. Например, я загрузил в память бинарный файл и хочу изменить адрес JMP оператора JMP (я знаю, где переход, и могу получить оператор). Я пытался сделать что-то вроде этого:
i = ida.idautils.DecodeInstruction(addr)
op = i.Op1
op.addr = new_addr
i.Op1.assign(op)
print i.Op1.addr
Но адрес не меняется. Вместо этого, если я сделаю:
i = ida.idautils.DecodeInstruction(addr)
op = idaapi.op_t()
op.addr = new_addr
i.Op1.assign(op)
print i.Op1.addr
Это работает, но когда я смотрю на байты (используя [idaapi.get_bytes(addr+i) for i in range(0, i.size)]), они не меняются. Я бы хотел изменить этот адрес и увидеть это изменение также при чтении байтов.