- // 0: &PyUnicode_Concat+0x0
- // 8: &_PyRuntime+0x0
- // 10: &_PyUnicode_ExactDealloc+0x0
- // 18: CONTINUE
- // 20: ERROR_TARGET
- const unsigned char data_body[40] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- };
- memcpy(data, data_body, sizeof(data_body));
- patch_64(data + 0x0, (uintptr_t)&PyUnicode_Concat);
- patch_64(data + 0x8, (uintptr_t)&_PyRuntime);
- patch_64(data + 0x10, (uintptr_t)&_PyUnicode_ExactDealloc);
- patch_64(data + 0x18, (uintptr_t)code + sizeof(code_body));
- patch_64(data + 0x20, state->instruction_starts[instruction->error_target]);
- memcpy(code, code_body, sizeof(code_body));
- patch_x86_64_32rx(code + 0x11, (uintptr_t)data + -0x4);
This file has been truncated. show original