From da0702214bac437883576bd7b4cc71694fa6fae1 Mon Sep 17 00:00:00 2001 From: Francesco Tamagni Date: Wed, 10 Jan 2024 16:29:42 +0100 Subject: [PATCH] stalker: Copy BLR for excluded calls on arm64 Instead of replacing them with functionally-equivalent ones, so that any pointer authentication context is used as expected. --- gum/backend-arm64/gumstalker-arm64.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gum/backend-arm64/gumstalker-arm64.c b/gum/backend-arm64/gumstalker-arm64.c index 3c8bba7c5..c74c5f3f1 100644 --- a/gum/backend-arm64/gumstalker-arm64.c +++ b/gum/backend-arm64/gumstalker-arm64.c @@ -3,6 +3,7 @@ * Copyright (C) 2017 Antonio Ken Iannillo * Copyright (C) 2019 John Coates * Copyright (C) 2023 Håvard Sørbø + * Copyright (C) 2024 Francesco Tamagni * * Licence: wxWindows Library Licence, Version 3.1 */ @@ -4796,10 +4797,7 @@ gum_exec_block_write_call_invoke_code (GumExecBlock * block, * therefore don't have to strip the low bit from the target address * returned from the inline cache code. */ - if (gc->instruction->ci->id == ARM64_INS_BLR) - gum_arm64_writer_put_blr_reg_no_auth (cw, target->reg); - else - gum_arm64_writer_put_blr_reg (cw, target->reg); + gum_arm64_writer_put_bytes (cw, insn->start, insn->ci->size); #ifdef HAVE_LINUX gum_metal_hash_table_insert (ctx->excluded_calls, cw->code, insn->end);