idautils 및/또는 idaapi를 사용하여 명령어의 Op 값을 변경하려고합니다. 예를 들어, 메모리에 바이너리 파일을 다운로드했으며 JMP 문의 JMP 주소를 변경하려고합니다 (점프가 어디인지 알고 명세서를 얻을 수 있음을 알고 있습니다). 나는 이런 식으로 뭔가하려고 노력 :ida API를 사용하여 명령어 수정
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
그것은 내가 바이트 볼 때 작동하지만, (사용 [범위 (0 난에 대한 idaapi.get_bytes (ADDR + i)를, i.size를)), 그들이 변경되지 않았습니다. 그 주소를 변경하고 바이트를 읽을 때도이 변경 사항을 확인하고 싶습니다.